从 React Native 中的图像组件中的 JSON 数据导入图像字符串

Import image string from JSON Data in Image component in React Native

我正在尝试从模拟数据数组中获取图像字符串并将其推送到 React Native 中的 <Image> 组件中。这是我的 Data 数组:

const data= [
  {
    title: 'Lorem ipsum dolor sit amet.',
    price: '.99',
    image: '../assets/img/item01.jpg',
  },
  {
    title: 'Lorem ipsum dolor sit amet.',
    price: '.99',
    image: '../assets/img/item02.jpg',
  },
  {
    title: 'Lorem ipsum dolor sit amet.',
    price: '.99',
    image: '../assets/img/item03.jpg',
  },
  {
    title: 'Lorem ipsum dolor sit amet.',
    price: '.99',
    image: '../assets/img/item04.jpg',
  },
  {
    title: 'Lorem ipsum dolor sit amet.',
    price: '.99',
    image: '../assets/img/item05.jpg',
  },
  {
    title: 'Lorem ipsum dolor sit amet.',
    price: '.99',
    image: '../assets/img/item06.jpg',
  },
  {
    title: 'Lorem ipsum dolor sit amet.',
    price: '.99',
    image: '../assets/img/item07.jpg',
  },
];

我正在尝试通过映射 data 数组来使用 image 值。图像组件是:

<View style={{
      width: 164,
      height: 164,
      borderRadius: (1 / 2) * 164,
      backgroundColor: color.white,
      shadowColor: 'rgba(57,57,57,0.5)',
      shadowOffset: { width: 0, height: 1 },
      shadowRadius: 2,
      elevation: 20,
      overflow: 'hidden',
}}>
 <Image
  source={require(data.image)}
  resizeMode='contain'
  style={{ width: null, height: null, flex: 1 }}
 />
</View>

如果我使用它,则会发生错误: Invalid call at line 60: require(item.illustration)

如果我使用- source={{ uri: item.illustration }} 而不是 require 函数,然后 Nothing 出现。 谁能帮我解决如何从数组导入本地图像?

如果你使用的是本地图片,那么你需要添加require函数来加载图片,当你要通过url显示时,你需要添加uri

您可以使用 require 函数在您的 Data Array 中添加本地图像,就像这样

const data= [
 {
 title: 'Lorem ipsum dolor sit amet.',
 price: '.99',
 image: require(../assets/img/item01.jpg),
 },
 {
 title: 'Lorem ipsum dolor sit amet.',
 price: '.99',
 image: require(../assets/img/item01.jpg),
 },
]

在你的图像视图中只需要这样调用它

<Image
 source={data.image}
 resizeMode='contain'
 style={{ width: null, height: null, flex: 1 }}
/>

如果您无法实现,那么您也可以像这样导出图像并添加到您的 Data 数组

export const first_img = require('../assets/img/item01.jpg');
export const second_img = require('../assets/img/item01.jpg');


const data= [
 {
 title: 'Lorem ipsum dolor sit amet.',
 price: '.99',
 image: first_img,
 }
]

同样可以调用

有点晚了,但希望它能对某人有所帮助。您可以使用 Image

中的 resolveAssetSource
const data= [
       { title: 'Lorem ipsum dolor sit amet.',
         price: '.99',
         image: Image.resolveAssetSource(require("../assets/img/item01.jpg")).uri, 
       }
      ]

当然需要先导入Image,

import { Image } from "react-native";