useState 不会立即更新状态

时间:2021-02-17 09:03:32

标签: javascript reactjs google-cloud-firestore use-effect use-state

这里 userlist 正在立即更新上述逻辑的正确代码 我正在尝试从 firestore 获取用户列表,而不是遍历该列表以从不同集合中查找用户详细信息

useEffect(() => {
    db.collection("following/" + Credens.uid + "/userFollowing")
      .get()
      .then((snapshot) => {
        followingList = snapshot.docs.map((value, ind) => value.data());
      })
      .then(() => {
        if (followingList.length > 0) {
          followingList.map((value, index) => {
            db.collection("Postss")
              .doc(value.useruid)
              .collection("MovieWatched")
              .get()
              .then((snaps) => {
                // let Detail = snap.data()
                let movieidList = snaps.docs.map(
                  (value) => value.data().postMovieId
                );

                if (movieidList.includes(MovieId) === true) {
                  setuserList((prev) => [...prev, value.useruid]);
                }
              });
          });
        }
      })
      .then(() => {
        console.log(userList);
        userList.map((value, index) => {
          db.collection("users")
            .doc(value)
            .get()
            .then((snapshot) => {
              setfriendsWatchedData((prev) => [
                ...prev,
                {
                  usersID: value,
                  userData: snapshot.data(),
                },
              ]);
            });
        });
      });

    // return () => {
    //     cleanup
    // }
  }, []);

1 个答案:

答案 0 :(得分:1)

为了确保状态确实发生了变化,您可以使用 useEffect() 来监视该状态的变化,例如:

useEffect(() => { 
  if (userList) {
  // userList.map....
  } 
}, [userList])

可以在 if 语句中指定附加条件。只要状态改变,钩子就会运行。