javascript - 来自 JSON 的反应本机 SectionList 图像
问题描述
即使文本数据没有问题,我在将图像从 JSON 文件渲染到部分列表时也遇到了一些问题。
这是我的 JSON 数据:
{
"title" : "Friday",
"data":
[
{
"artist": "artist 1",
"stage": "The Oak",
"Instagram": "insta",
"Spotify": "spot",
"date": "10/8/2021",
"Image": "../assets/art1.jpg",
"Time" : "4:30PM - 5:00 PM"
},
{
"artist": "artist 2",
"stage": "The Oak",
"Instagram": "insta",
"Spotify": "spot",
"date": "10/8/2021",
"Image": "../assets/art2.jpg",
"Time" : "5.00PM - 5:30 PM"
}
]},
我知道您必须使用 require 函数来渲染它,但我似乎无法正确处理它。
这是部分列表:
<SectionList
sections={data}
keyExtractor={(item, index) => index.toString()}
renderItem={({ item }) => (<View style={styles.listItemView}>
<Image style={styles.image} source={require(item.Image)} />
<View>
<Text style={styles.listItem}>{item.artist}</Text>
<Text style={styles.listItemTime} >{item.Time}</Text>
</View>
</View>)}
renderSectionHeader={({ section }) => (
<View style={styles.item}>
<Text style={styles.title}>{section.title}</Text>
</View>)}
/>
欢迎任何帮助。如果我需要添加附加信息,请告诉我!
谢谢!
解决方案
您可以使用 if-else 或 switch 语句来获取要使用的图像。
const getArtImage = (artName) => {
switch (artName){
case 'art1':
return require('../assets/art1.jpg');
case 'art2':
return require('../assets/art2.jpg');
default:
return require('../assets/defaultArt.jpg');
}
}
并在您的 Image 组件中使用此 getArtImage 函数。
<Image style={styles.image} source={getArtImage(item.Image)} />
item.Image
应该是art1
,art2
等等。
--
如果你的 json 是本地文件,你可以把它转换成 js 文件。
export default {
title: "Friday",
data: [
{
artist: "artist 1",
stage: "The Oak",
Instagram: "insta",
Spotify: "spot",
date: "10/8/2021",
Image: require("../assets/art1.jpg"),
Time: "4:30PM - 5:00 PM",
},
{
artist: "artist 2",
stage: "The Oak",
Instagram: "insta",
Spotify: "spot",
date: "10/8/2021",
Image: require("../assets/art2.jpg"),
Time: "5.00PM - 5:30 PM",
},
],
};
推荐阅读
- jquery - 发布方法:SyntaxError:意外令牌:d
- kubernetes - AKS HPA 设置可配置属性
- php - 如何通过 PHP 中的反射检测非类型化类属性的 null 默认值?
- c# - 我所有的编译器警告都去哪儿了?VS2019,C# 9,.Net 5
- python - kivy 运行后的回溯
- java - 如何在PDF android中将图像位置更改为中心
- python-3.x - 无法访问 Matplotlib 样式并且“plt.style”为空
- axios - 异步 Axios 调用未在 Svelte 中执行:尝试使用结果引发 TypeError: Cannot convert undefined or null to object ;获取 API 工作
- android - 当显示带有导航组件的对话框时,有没有办法留在当前片段?
- c# - Unity中如何让鼠标看起来更平滑