javascript - 如何在反应中将从firestore获取的文档传递到本地状态
问题描述
我在 Firebase Firestore 中有一些文件。我正在使用这个 javascript 函数来获取那些
const fetchName = async () => {
console.log("fetchName fired");
const snapshot = await db
.collection("Users")
.doc(user?.uid)
.collection("details")
.doc("data")
.get();
// Data is a local state variable
// SetData is used to manipulate Data
setData(snapshot.data());
console.log("Snapped Data: ",snapshot.data());
console.log("Fetched Data: ",Data);
};
这是状态变量
const [Data, setData] = useState("");
我正在将fetchName()
函数传递给useEffect
钩子。
useEffect(()=>
{
console.log("UseEffect Fired");
if(user!==null)
{
console.log("User not NUll, User->",user);
fetchName();
}
},[user])
问题
UseEffect 工作正常并fetchName()
在每次用户登录或注销时触发。这里的主要问题是当使用效果被触发时,我可以看到snapshot.data()
获取正确的数据,但它没有将其分配给 setData()。从命中和试验中,我看到setData()
只有在我对代码进行任何更改或重新启动服务器时才会触发。
期望的结果
但我不希望每次 snapshot.data() 获取它应该分配给Data
使用的数据setData()
解决方案
推荐阅读
- python - 如何将 16 位二进制文件转换为 32 位文件?
- webpack - 访问 google-closure-library 方法 goog.require 和 goog.provide
- drupal-7 - drupal_mail() 返回 true 但无法发送邮件
- mysql - Mysql - mysqld.service 的作业失败,因为控制进程以错误代码退出
- angularjs - Angularjs将数据从表中获取到标签中
- java - 找到一个属于另一个连接关系的对象
- javascript - 谷歌地图标记聚类不适用于缩小
- javascript - 'this.$refs' 在父组件中始终为空
- mysql - 未找到 CWP 数据库
- selenium-webdriver - 如何在Webdriver中将目标值写为CSS选择器以查找元素