2015-11-29 62 views
2

我想在我的react-native项目中使用一些图像。反应本机相对图像路径加载

我的项目具有以下结构:

./index.android.js 

./images/icon.png 

我想index.android.js内的视图中加载图像:

<View> 
     <Image 
      source={require('./images/icon.png')} 
      style={styles.icon} 
     /> 
</View> 

我知道,将图像发现,因为我没有收到任何错误(如果我试图要求我不存在的图像)。但是图像没有加载,图像应该是空的。

我在做什么错?我正在使用react-native 0.15.0,使用移动设备进行测试。

更新:

所以我发现这对我的应用我的build.gradle文件中:

* // where to put drawable resources/React Native assets, e.g. the ones you use via 
* // require('./image.png')), in debug mode 
* resourcesDirDebug: "$buildDir/intermediates/res/merged/debug", 

我的图片都不是文件夹中。我想这就是问题所在?

回答

3

您是否在运行Windows?我遇到了这个完全相同的问题,结果是packager/react-packager/src/Bundler/index.js中的一个错误,它是如何生成资产URL路径的。它使用path模块将本地文件路径转换为URL路径,但path模块返回具有本机路径分隔符的路径。在Windows上,由于路径具有反斜杠而非斜杠,最终导致无效的URL路径。对此的一个快速解决方案是用斜线替换反斜杠。

有关详细信息,请参阅我的拉取请求中的文件差异。

https://github.com/facebook/react-native/pull/4416/files

更新:我拉请求已被接受,并用0.17版本发布。

+0

我正在使用Windows。我手动添加了你的代码片段到我的,因为我有的文件似乎是不同的(虽然我敢肯定,我有最新版本的反应原生),我的节点服务器不会启动,如果我复制整件事。现在我的图片加载正常。如果我理解正确,拉请求由于某种原因而被拒绝? (只是问,因为我真的希望看到这个固定的) – Nirri

+0

@Nirri拉请求仍然是打开的。它没有通过自动化测试,但该测试与我的更改完全无关,并且在最近的其他请求中失败。希望这不会阻碍,但我会密切关注它,看看我能不能继续。如果你觉得这样,我会建议在我的拉取请求中添加一条评论,以确认你有同样的问题,所以他们知道这不仅仅是我有问题。 –

+1

我明白了。我留下了评论。感谢您的帮助。 – Nirri