我是新手,想要在Android和iOS中构建一个小型测试应用。
我在index.ios.js和index.android.js文件旁边创建了一个images目录。
我的代码产生红屏错误,说“无法解析模块./images/tree.png ...目录无效......”:
'use strict';
var React = require('react-native');
var {
AppRegistry,
StyleSheet,
Text,
View,
Image,
} = React;
var TestApp = React.createClass({
render: function() {
return (
<View>
<Text>test app</Text>
<Image
style={styles.thumbnail}
source={require('./images/tree.png')} /> />
</View>
);
},
});
var styles = StyleSheet.create({
thumbnail: {
width: 100,
height: 100,
},
});
AppRegistry.registerComponent('TestApp', () => TestApp);
我应该在哪里放置图片以及如何引用它们?
答案 0 :(得分:2)
假设images
目录与index.*.js
文件位于同一位置,您的代码看起来是正确的。
你有什么版本的React Native?来自Images文档页面:
可用的React Native 0.14+。如果您已经生成了项目 0.13或更早,读这个。新的资产系统依赖于Xcode和Gradle的构建钩子,它们包含在生成的新项目中 react-native init。如果您在此之前生成了项目,那么您就可以了 必须手动将它们添加到项目中才能使用新的图像资源 系统。有关如何执行此操作的说明,请参阅Upgrading。
如果要验证您的react-native版本,执行此操作的简单方法是从项目目录运行以下npm
命令:
npm ls react-native
当前版本的版本是0.15.0。
确保在更新软件包后忘记运行react-native upgrade
,因为这是将新资产系统的构建挂钩添加到现有项目所必需的。如果您之前未更新您的react-native版本,则可能会解释您遇到的问题。
如果您碰巧使用Windows进行开发,请参阅我的answer to this question,了解有关如何解决Windows上新资产系统的错误的详细信息。