我已经成功地从Firestore检索了数据,但是无法更新状态。 请检查代码。
export const TaskContextProvider = (props) => {
const [Tasks, setTasks] = useState([])
const { User } = useContext(AuthContext)
useEffect(() => {
firebase.firestore()
.collection("Users")
.doc(User.id)
.collection("Tasks")
.onSnapshot((snapshot) => {
const newtask = snapshot.docs.map((doc)=>({
id : doc.id,
...doc.data()
}))
setTasks(newtask)
console.log('newtask', newtask)
console.log('Tasks', Tasks)
})
}, [])
以下控制台输出是
newtask (10) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
Tasks []
答案 0 :(得分:0)
setTasks
是异步的,在设置新值的同一函数中调用时,可能永远不会显示正确的值。而是将其记录在useEffect
之外,以查看它是否实际上正在更新。然后,您将看到每个渲染的console.log。