【问题标题】:Set image name from obj to source React Native将图像名称从 obj 设置为源 React Native
【发布时间】:2018-02-09 20:25:12
【问题描述】:

我对图像源和 Obj 的参数有疑问。
在本地对象内部,我有 IMG_NAME: 'A.png',如下所示:

我想将此值与源连接,例如

但我知道 require 不支持连接所以我决定问你这个问题关于解决这个问题的最佳方法。

我该如何尝试解决这个问题(my solve screenshot)和错误图像(Error reponse

【问题讨论】:

标签: image react-native


【解决方案1】:

如果可以修改本地对象改成这个

{
   "id_letter": "1",
   "name_letter": "A",
   "image" require("./app/assets/images/A.png")
}

然后将组件更改为

<Image style={styles.letter_image} source={data.image} />

编辑另一个方法使用 switch case 语句

要求不支持动态路径。使用 switch case 语句来解决这个问题

function getImage(img_name) {
  switch(img_name) {
    case "A.png": return require("./app/assets/images/A.png");
    case "B.png": return require("./app/assets/images/B.png");
  }
}

<Image style={styles.letter_image} source={getImage(data.img_name)} />

【讨论】:

  • 我使用 JSON 对象,没有使用 require 我是怎么知道的
  • require 不支持动态路径 我认为你应该使用 switch case 语句代替 switch (img_name) { "A.png": return require("./app/assets /images/A.png"); “B.png”:返回要求(“./app/assets/images/B.png”); }
  • 仍然不是动态的
【解决方案2】:

我认为在图像组件中使用动态源有 4 种简单的方法:

1)您可以使用已经捆绑到应用程序中的图像:

图像来自 Hybrid App 的资源
如果您正在构建一个混合 应用程序(React Native 中的一些 UI,平台代码中的一些 UI)你可以 仍然使用已经捆绑到应用程序中的图像。

对于通过 Xcode 资产目录或 Android 中包含的图像 drawable 文件夹,使用不带扩展名的图片名称:

Image source={{uri: 'app_icon'}} style={{width: 40, height: 40}} />

对于Android assets 文件夹中的图片,使用asset:/ 方案:

Image source={{uri: 'asset:/app_icon.png'}} style={{width: 40, height: 40}} />

这些方法不提供安全检查。由你来保证 这些图像在应用程序中可用。你也必须 手动指定图像尺寸。


https://facebook.github.io/react-native/docs/images.html#images-from-hybrid-app-s-resources

2)您可以在对象中使用 require('imagePath') 。

{
  "id_letter": "1",
  "name_letter":"A",
  "img_name":require('./app/assets/images/imgname.jpg');
}



3)您可以将图像存储在网络中,您可以使用:

<Image source={{uri: 'http: //site.com/app/assets/images/'+data.img_name}}/>



4)您可以使用库https://github.com/wkh237/react-native-fetch-blob存储图像。

【讨论】:

  • 操作,对不起。我将编辑答案以使其更清晰。对不起。
  • 是的,我已经考虑将图像存储在 Web 服务器中,但最初我想将它们存储在应用程序的本地文件夹中。关于第二个选项,我想说我使用 JSON 对象,并且在其中我无法保留以下值:require('./app/assets/images/A.png')
  • 我知道,但我创建离线应用程序并希望在本地加载图像
  • 是的,我想我会使用它,但我希望在没有第三方的情况下解决它)
  • 我正在测试 require(path/${data.img_name}),但不幸的是,它不起作用。
猜你喜欢
  • 2018-01-09
  • 2018-04-22
  • 2021-11-15
  • 1970-01-01
  • 2021-05-15
  • 1970-01-01
  • 1970-01-01
  • 2017-05-16
  • 1970-01-01
相关资源
最近更新 更多