inn*_*nek 0 javascript firebase reactjs google-cloud-firestore
我想了解为什么以下代码会触发此错误?
TypeError 取消订阅不是一个函数
.onSnapshot()当我使用函数而不是时,它没有这样的错误get()。
谢谢
useEffect(() => {
const unsubscribe = database
.collection("Maps")
.doc(id)
.collection("Entries")
.get()
.then(
data => {
data.forEach(doc => {
console.log(doc.id, " => ", doc.data());
});
setLoading(false);
},
err => {
setError(err);
console.log(err);
}
);
return () => unsubscribe();
}, [id]);
Run Code Online (Sandbox Code Playgroud)
您无法取消订阅通话get()。因此,get()不会返回取消订阅方法,并且您的调用失败。
当您开始使用 监听数据时onSnapshot,客户端会持续监听数据的更改。因此,它返回一个函数,您可以调用该函数来停止监听。
当调用get()加载数据时,客户端从服务器获取一次数据,然后立即停止监听变化。这就是为什么在您致电后无需取消订阅(也无法停止)的原因get()。
如果数据加载的时间可能比组件安装的时间长,您需要检查处理程序内组件的卸载情况then()。有关示例,请参阅是否有方法检查反应组件是否已卸载?
| 归档时间: |
|
| 查看次数: |
1486 次 |
| 最近记录: |