Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 状态未更新。我想从firestore获取数据_Reactjs_Firebase_Google Cloud Firestore_React Hooks - Fatal编程技术网

Reactjs 状态未更新。我想从firestore获取数据

Reactjs 状态未更新。我想从firestore获取数据,reactjs,firebase,google-cloud-firestore,react-hooks,Reactjs,Firebase,Google Cloud Firestore,React Hooks,我已成功从firestore检索数据,但无法更新状态。 请检查代码 export const TaskContextProvider = (props) => { const [Tasks, setTasks] = useState([]) const { User } = useContext(AuthContext) useEffect(() => { firebase.firestore() .collection(

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

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

这是否回答了您的问题?