状态未更新。我想从Firestore中获取数据

时间:2020-08-31 17:17:04

标签: reactjs firebase google-cloud-firestore react-hooks

我已经成功地从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 []

1 个答案:

答案 0 :(得分:0)

setTasks是异步的,在设置新值的同一函数中调用时,可能永远不会显示正确的值。而是将其记录在useEffect之外,以查看它是否实际上正在更新。然后,您将看到每个渲染的console.log。