从 Firestore 返回值而不是 console.logging 它。 - 反应

时间:2021-07-16 04:54:32

标签: javascript reactjs asynchronous google-cloud-firestore

我查看了 firestore 文档。关于如何检索数据,它工作正常。但我无法将值存储在变量中。我看了一下 here 如何从 Firestore 数据库返回值?但答案最终结果仍然是 console.log(result);

function returnUserData(userId){
  let docRef = db.collection("users").doc(userId)
  return docRef.get().then((doc) => {
    if (doc.exists) {
        doc.data()
        return doc.data();
    } else {
        // doc.data() will be undefined in this case
        console.log("No such document!");
    }
  }).catch((error) => {
      console.log("Error getting document:", error);
  });
}
returnUserData(localStorage.getItem("currentUserId")).then(result => {
  console.log(result);
})

我如何才能返回 returnUserData 的实际值?

1 个答案:

答案 0 :(得分:2)

在一个典型的 React 应用程序中,您希望从结果中设置一个状态值,您可以在 useEffect 钩子中进行这样的异步调用,并在它解析后设置状态值

const [doc, setDoc] = useState()

useEffect(() => {
  returnUserData(localStorage.getItem("currentUserId")).then(result => {
    setDoc(result)
  })
}, [])
相关问题