我有一组数据。我使用了data.map的7个项目。我在Firebase上加载了这个数组,现在我不能这样称呼它。因为这不是对象中已经存在的数组。
问题。
如何为对象做data.map。而且,我需要传输数据。具体来说:id,name,info,latlng。里面是应该在data.map中的ImageCard。
示例对象:
Object {
"0": Object {
"id": 0,
"image": "/images/Stargate.jpg",
"info": "Stargate is a 1994 science fiction adventure film released through Metro-Goldwyn-Mayer (MGM) and Carolco Pictures..",
"latlng": Object {
"latitude": 53.6937,
"longitude": -336.1968,
},
"name": "Stargate",
"year": "1994",
},
建议我使用 Object.keys ,但仍然无法正常工作。 由于它最初是:
const url =""
然后:
try {
const response = await fetch(url);
const data = await response.json();
this.setState({ data });
} catch (e) {
throw e;
}
在render(){:
const { title, data , label } = this.state;
返回:
{data.map(item => (
<ImageCard
data={item}
key={item.id}
onPress={() =>
navigation.navigate(IMAGEPROFILE, {
show: item,
onGoBack: this.onGoBack
})
}
/>
))}
在图像卡中:
const ImageCard = ({ data, onPress }) => {
const { image, name, year } = data;
对于Object.keys,我采用如下数据:
firebase
.database()
.ref("/events/" )
.once("value", data => {
if(data !== null){
this.setState({
data })
console.log(data.toJSON())
}
})
如何更正我的示例以将data.map转换为Object.keys?
答案 0 :(得分:2)
使用Object.keys并映射到返回的数组上。
Object.keys()方法返回给定对象自己的属性名称的数组,其顺序与我们在普通循环中获得的顺序相同。
{
Object.keys(data).map(item => ( <
ImageCard data = { item } key = { item.id } onPress = {
() =>
navigation.navigate(IMAGEPROFILE, {
show: item,
onGoBack: this.onGoBack
})
}
/>
))
}