在React Native中动态更改图像URL

Nim*_*nya 4 image react-native

我正在尝试动态设置图片网址.图像是本地存储的,其位置路径位于JSON文件中.

JSON文件

{
  "total": 2,
  "categories": [
    {
      "id": "cat1",
      "name": "Burgers",
      "itemCount": 10,
      "images":{
        "main":"./../images/items/Burgers.jpg"
      }
    },
    {
      "id": "cat2",
      "name": "Pizzas",
      "itemCount": 5,
      "images":{
        "main":"./../images/items/Pizzas.jpg"
      }
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

renderItem: function (item) {
    var imageURL = require(item.images.main);
    return (
        <View style={styles.mainContainer}>
            <Image source={imageURL} style={styles.image}>
                <Text style={styles.textMain}>{item.name}</Text>
            </Image>
        </View>
    );
}
Run Code Online (Sandbox Code Playgroud)

这会产生以下错误.

2015-12-10 16:02:45.295 [错误] [tid:com.facebook.React.RCTExceptionsManagerQueue]未处理的JS异常:需要未知模块"./../ images/items/Burger.jpg".如果您确定该模块在那里,请尝试重新启动打包器.

但如果我替换var imageURL = require(item.images.main); with var imageURL = require("./../ images/items/Pizzas.jpg"); 它完美地显示了图像.

是什么造成的?这是怎么回事?

rme*_*ns9 8

使用require(PATH)方法实际上使得打包器尝试在打包期间解析图像,如果它只是查看变量就无法做到.我会尝试做:

<Image source={{uri: image.images.main}} />
Run Code Online (Sandbox Code Playgroud)

  • 我觉得这不再适用了.我现在在我的应用程序中这样做.我没有错误,但我的图像没有显示.为什么显示来自api的图像如此之难?! (4认同)
  • 如果您从 url 加载,则需要指定尺寸。&lt;图片来源={{uri: image.images.main}} style={{width: 32, height: 32}} /&gt; (2认同)