首页 > 解决方案 > 从 Firestore 返回值而不是 console.logging 它。- 反应

问题描述

我看过firestore doc。关于如何检索数据,它工作正常。但我无法将值存储在变量中。我在 这里查看了如何从 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

标签: javascriptreactjsasynchronousgoogle-cloud-firestore

解决方案


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

const [doc, setDoc] = useState()

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

推荐阅读