React native(0.21)的文档指出,只有在静态加载图片时,即文件名是否以某种方式事先知道:
请注意,要使其正常工作,必须静态了解require中的图像名称。
来源:https://facebook.github.io/react-native/docs/images.html#content
给出了一个例子:
// GOOD
<Image source={require('./my-icon.png')} />
// BAD
var icon = this.props.active ? 'my-icon-active' : 'my-icon-inactive';
<Image source={require('./' + icon + '.png')} />
不幸的是,在我的情况下,我事先并不知道图片的文件名,因为它们是在JSON文件中配置的。
有没有办法在react native中使用本地图像文件?如果我知道文件的位置,我可以通过file://
协议加载它们吗?在 iOS 文件系统中,应用程序的位置是否存在常量或变量?
答案 0 :(得分:2)
是的,您可以动态使用图像。然而,它们被视为网络图像。这意味着打包器没有附加任何图像元数据(宽度,高度)。
如果你有一些图片,只需利用包装工具。
// GOOD
var icon = this.props.active ? require('./my-icon-active.png') : require('./my-icon-inactive.png');
<Image source={icon} />
另一个选项是在JSON中保存元数据(宽度,高度)。您至少需要指定网络图像(或动态图像)的高度。给定(React.Dimensions)元数据(宽度,高度)和屏幕尺寸,选择合适的高度是微不足道的。如果您的应用需要在纵向和横向模式下工作,请使用react-native-orientation。