尝试通过我的 React 应用读取和显示来自 Firestore 的数据时出现错误“无法读取未定义的属性‘map’”
2019-09-19
448
我正在尝试显示从Firestore集合中读取的数据,但是从Firestore获取数据后,我尝试使用地图功能来映射&相应地显示数据,但最终出现错误:
763607679
,这可能表明我的事件对映射功能或事件是错误的格式或事件是空的。
这是我的代码以进行更多澄清:
047413482
我希望代码能够相应地显示每个事件的数据
2个回答
由于从 Firestore 加载数据可能需要一段时间,
events
的初始值将为空。从阅读
此答案
,似乎您可以将初始值传递给
React.useState()
,在这种情况下,该行应该是:
const [events, setEvents] = React.useState([]);
通过使用空数组 (
[]
) 进行初始化,
map
函数将不执行任何操作,直到数据加载完成。
或者,您只能在数据加载后显示网格,并在此之前显示某种“正在加载...”消息。类似于:
if (items) {
return (
<Grid item sm={4}>
{ events.map(event => (
<Card className={classes.card}>
<CardHeader
avatar={
loading ? (
<Skeleton variant="circle" width={40} height={40} />
) :
<Avatar
alt="Ted talk"
src={event.eventImgUrl}
/>
}
.... // code continues
}
else {
return (
<div>Loading...</div>
)
}
Frank van Puffelen
2019-09-19
我认为有人也可以尝试添加 async await,刚才对我来说有效,但我确信还有很多其他类似上述解决方案
React.useEffect( async () => {
const snapshot = await db.collection("Events").get()
if (snapshot.empty) {
console.log("No Docs found")
}
setEvents(
snapshot.docs.map((doc) => {
return {
...doc.data(),
documentID: doc.id,
}
})
);
});
});
Mars2024
2022-03-03