我正在用React Native开发一个应用程序,并且我有这个JSON:
const places = {
"place1":{
"title":"title 1",
"image":"../img/image1.jpeg",
"description":"description 1.",
},
"place2":{
"title":"title 2",
"image":"../img/image2.jpeg",
"description":"description 2.",
}
};
我想将其输出到元素列表中,我知道要做到这一点,我必须使用map()这是我的代码:
export default class App extends Component{
render() {
return (
<View style={styles.container}>
{places.map((place) => {
return (
<Text>{place.title}</Text>
<Text>{place.description}</Text>
)
})}
</View>
);
}
}
但是它不起作用,有人知道我做错了什么或如何实现我的目标吗?
答案 0 :(得分:2)
MAP函数在 Array 上起作用,而不在对象上起作用。请按以下方式更新您的const位置:
const places = [{
"title":"title 1",
"image":"../img/image1.jpeg",
"description":"description 1.",
},{
"title":"title 2",
"image":"../img/image2.jpeg",
"description":"description 2.",
}]
谢谢。享受编码。
答案 1 :(得分:2)
Places是一个对象,您不能像这样迭代。您必须使用Object.keys获取密钥,然后遍历它们。这样。
Object.keys(places).map((key) => {
return (
<Text>{places[key].title}</Text>
<Text>{places[key].description}</Text>
)
})}
答案 2 :(得分:1)
另一种解决方案是使用传播运算符:
{[...places].map((place) => {
return (
<Text>{place.title}</Text>
<Text>{place.description}</Text>
)
})}
答案 3 :(得分:0)
我在此处https://snack.expo.io/rk4f3aSnQ处创建了带有解决方案的小吃。
map
函数属于数组类,因此不适用于对象。
我将对象放在项目的places.json
文件中。您一定会找到一种方法。
另外,在使用return
时,始终将react-native
编码为单个组件,就像您在App.js
文件中注意到的那样,此代码段:
render() {
return (
<View style={styles.container}>
{places.map((place) =>
<View>
<Text>{place.title}</Text>
<Text>{place.description}</Text>
</View>)}
</View>
);
}