Поскольку загрузка данных из 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>
)
}