来自 JSON 的 React Native SectionList 图像
React Native SectionList Images from JSON
我在从 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');
}
}
并在您的图像组件中使用此 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",
},
],
};
我在从 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');
}
}
并在您的图像组件中使用此 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",
},
],
};