如何在 React Native 中显示来自变量的图像
How to display image from variable in react native
我有对象数组,对象是字符串,它是图像的路径
var [data, setData] = useState([
{
src: "../assets/image.jpg",
},
{
src: "../assets/image2.jpg",
},
])
return (
<SafeAreaView>
<View>
{data.map(image => {
return(<View>
<Image source={require(image.src)} /> //THIS DOESNT WORK
</View>)
})}
</View>
</SafeAreaView>
);
}
这项工作 require('../assets/image.jpg')
但我想从数据中获取 src -
我试过了 ---- source={{uri: ``${user.src}`}} ---- 它不起作用---------------- --------------------------------------
以及我如何显示来自网络而不是项目文件夹中的图像(例如:https://static.kupindoslike.com/slika-konj-_slika_O_80128845.jpg)
有这个问题,我是这样解决的
../src/assets/images -> 创建 index.js 文件并将图像添加到 images
文件夹中。你的index.js应该是这样的
import firstImg from "./image_1.png";
import secondImg from "./image_2.png";
const images = {
firstImg,
secondImg,
};
export default images;
然后,在您的组件中,导入 images.js 并创建您的对象。
import images from "../../assets/images";
const imagesBlock = [
{
imgSrc: images.firstImage
},
{
imgSrc: images.secondImage
}
]
然后使用.map()
函数。您还可以为每个图像添加自定义 class。
imagesBlocks.map((source, index) => {
const { imgSrc } = source;
return (
<img src={imgSrc} key={index} alt="image" />
)
})
Q2) 如何显示来自网络而不是项目文件夹中的图像?
答案:
<Image source={{uri: 'https://static.kupindoslike.com/slika-konj-_slika_O_80128845.jpg'}} style={{width: 400, height: 400}} />
Q1) 关于你的第一个问题。您没有正确获得价值。请试试这个答案。
var [data, setData] = useState([
{
src: require("../assets/image.jpg"),
},
{
src: require("../assets/image2.jpg"),
},
]);
return (
<SafeAreaView>
<View>
{data.map((image) => {
return (
<View>
<Image source={image["src"])} /> //THIS WILL WORK
</View>
);
})}
</View>
</SafeAreaView>
);
使用 FlatList 渲染项目数组,它具有延迟加载功能,因此当您使用大量数据时会很好。
在您的情况下使用此代码,它将正常工作:
var [data, setData] = useState([
{
id: 1,
src: require("../assets/image.jpg"),
},
{
id: 2,
src: require("../assets/image2.jpg"),
},
])
return (
<SafeAreaView>
<FlatList
data={data}
showsVerticalScrollIndicator={false}
renderItem={({item}) => (
<Image
source={item.src}
style={styles.imageStyle}
/>
)}
keyExtractor={item => item.id.toString()}
/>
</SafeAreaView>
我有对象数组,对象是字符串,它是图像的路径
var [data, setData] = useState([
{
src: "../assets/image.jpg",
},
{
src: "../assets/image2.jpg",
},
])
return (
<SafeAreaView>
<View>
{data.map(image => {
return(<View>
<Image source={require(image.src)} /> //THIS DOESNT WORK
</View>)
})}
</View>
</SafeAreaView>
);
}
这项工作 require('../assets/image.jpg')
但我想从数据中获取 src -
我试过了 ---- source={{uri: ``${user.src}`}} ---- 它不起作用---------------- --------------------------------------
以及我如何显示来自网络而不是项目文件夹中的图像(例如:https://static.kupindoslike.com/slika-konj-_slika_O_80128845.jpg)
有这个问题,我是这样解决的
../src/assets/images -> 创建 index.js 文件并将图像添加到 images
文件夹中。你的index.js应该是这样的
import firstImg from "./image_1.png";
import secondImg from "./image_2.png";
const images = {
firstImg,
secondImg,
};
export default images;
然后,在您的组件中,导入 images.js 并创建您的对象。
import images from "../../assets/images";
const imagesBlock = [
{
imgSrc: images.firstImage
},
{
imgSrc: images.secondImage
}
]
然后使用.map()
函数。您还可以为每个图像添加自定义 class。
imagesBlocks.map((source, index) => {
const { imgSrc } = source;
return (
<img src={imgSrc} key={index} alt="image" />
)
})
Q2) 如何显示来自网络而不是项目文件夹中的图像?
答案:
<Image source={{uri: 'https://static.kupindoslike.com/slika-konj-_slika_O_80128845.jpg'}} style={{width: 400, height: 400}} />
Q1) 关于你的第一个问题。您没有正确获得价值。请试试这个答案。
var [data, setData] = useState([
{
src: require("../assets/image.jpg"),
},
{
src: require("../assets/image2.jpg"),
},
]);
return (
<SafeAreaView>
<View>
{data.map((image) => {
return (
<View>
<Image source={image["src"])} /> //THIS WILL WORK
</View>
);
})}
</View>
</SafeAreaView>
);
使用 FlatList 渲染项目数组,它具有延迟加载功能,因此当您使用大量数据时会很好。
在您的情况下使用此代码,它将正常工作:
var [data, setData] = useState([
{
id: 1,
src: require("../assets/image.jpg"),
},
{
id: 2,
src: require("../assets/image2.jpg"),
},
])
return (
<SafeAreaView>
<FlatList
data={data}
showsVerticalScrollIndicator={false}
renderItem={({item}) => (
<Image
source={item.src}
style={styles.imageStyle}
/>
)}
keyExtractor={item => item.id.toString()}
/>
</SafeAreaView>