React Native中Image的source动态路径

1
2
3
4
var btnIons = ['message', 'user', 'custom-service',
'trade-record', 'settle-record.png', 'immediately-settle'];

<Image source={require('./img/home-icon-'+btnIons[this.props.id]+'.png')} />

上面这段代码,发生的错误提示是

Requiring unknown module “./img/home-icon-message.png”. If you are
sure the module is there, try restarting the packager.

图片文件的查找会和 JS 模块的查找方式一样。在上面的这个例子里,是哪个组件引用了这个图片,Packager 就会去这个组件所在的文件夹下查找my-icon.png。

注意:为了使新的图片资源机制正常工作,require 中的图片名字必须是一个静态字符串(不能使用变量!因为 require 是在编译时期执行,而非运行时期执行!)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 正确
<Image source={require('./my-icon.png')} />;

// 错误
const icon = this.props.active
? 'my-icon-active'
: 'my-icon-inactive';
<Image source={require('./' + icon + '.png')} />;

// 正确
const icon = this.props.active
? require('./my-icon-active.png')
: require('./my-icon-inactive.png');
<Image source={icon} />;