未处理的拒绝(TypeError):无法读取未定义的属性“ map”? (反应火力)

时间:2020-09-26 06:29:42

标签: javascript reactjs firebase google-cloud-firestore

我正在做的事情出了什么问题,我正在获取集合快照,将其循环遍历并将其推入状态,然后使用该状态呈现一些列表项 但我得到那个错误: Unhandled Rejection (TypeError): Cannot read property 'map' of undefined

代码:

const [books, setBooks] = useState([]);
db.collection('books').get()
   .then(snapshot => snapshot.forEach(doc => {
      setBooks([...books, doc.data()])
}))

return (
  books.map(return some jsx)
)

1 个答案:

答案 0 :(得分:1)

您做的setState过多。为什么不只做一次呢?

const [books, setBooks] = useState([]);
db.collection('books')
  .get()
  .then(snapshot => snapshot.map(s => s.data())
  .then(data => setBooks(data))
}))

return (
  books.map(b => <div>{book stuff here}</div>)
)