【问题标题】:React Native image as string not foundReact Native image as string not found
【发布时间】:2016-01-20 09:10:20
【问题描述】:

这很好用:

<Image source={require('./imgs/animage.jpg')}></Image>

这会返回一个错误:

var theimage = './imgs/animage.jpg';

<Image source={require(theimage)}></Image>

返回的错误是:

“需要未知模块'./imgs/animage.jpg'。如果你的模块在那里,请尝试重新启动包”

真的不知道问题出在哪里。

这行得通:

var theimage = require('./imgs/animage.jpg');

但这仍然没有:

var theimage = 'animage';
var theimage = require('./imgs/' + theimage + '.jpg');

我看不到任何动态生成图像的方法。

【问题讨论】:

    标签: ios image react-native


    【解决方案1】:

    你是对的。新的资产系统(以及旧的 require('image!xyz'))仅适用于静态图像。这是因为所有图像路径都是在构建步骤中静态计算出来的,而没有运行程序。此时构建系统不知道变量。

    所以你必须使用

    <Image source={{uri: theimage}}></Image>
    

    但 URI 可以有文件夹。为了在每次构建期间始终将最新的资源文件夹编译到应用程序中,您需要在 Xcode 项目而不是组中创建 文件夹链接。组仅包含在您创建组时存在的文件。文件夹链接反映了该文件夹的实际内容。 例如。您的项目中有一个名为 images 的文件夹。其中有一个文件夹 backgrounds 和一个文件 my_background.jpg。您将 images 添加为项目的文件夹引用。然后就可以使用了

    {uri: 'images/backgrounds/my_background.jpg'}
    

    【讨论】:

    • 所以您说您选择“将文件添加到 ”,然后选择包含所有图像的文件夹,然后取消选择以复制项目并将文件夹选项卡更改为“创建文件夹”参考”而不是“创建组”选项?
    • 我通常的做法是在“Build Phase”->“Copy Bundle Resources”下添加文件夹。但效果是一样的。
    【解决方案2】:

    由于某种原因,上述编码似乎不可能。这是我找到的一个解决方案:

    var theimage = 'animage.jpg';
    
    <Image source={{uri: theimage}}></Image>
    

    所有图像都必须添加到 xcode 项目中。这样,它们的位置就不能被文件夹分隔。

    【讨论】:

    • 您有旧信息:图像位置可以在文件夹中分隔,并且不必再将它们添加到 xcode 项目中。此更改是在 Android 支持登陆时进行的(我不记得确切的版本号)。
    • 那么你能回答我原来的问题吗?
    • 代码是正确的,但是附加的句子“必须添加到xcode项目中”不再正确(facebook.github.io/react-native/docs/image.html#source
    • 那是'require'而不是'uri'。使用 URI,路径将无法正常工作。但是 'require' 不适用于动态命名,就像我在原始问题中描述的那样。
    猜你喜欢
    • 2018-05-13
    • 2017-12-20
    • 2022-08-07
    • 2019-06-10
    • 2022-12-04
    • 1970-01-01
    • 2015-12-30
    • 2014-06-23
    • 1970-01-01
    相关资源
    最近更新 更多