gpt4 book ai didi

reactjs - 有什么方法可以在不删除它的情况下暂停 Firestore 监听器?

转载 作者:行者123 更新时间:2023-12-04 07:49:24 24 4
gpt4 key购买 nike

有没有办法在不删除它的情况下暂停 Firestore 监听器?
我有多个 firebase 监听器,其中一些依赖于其他监听器,这些监听器会在数据更改时更改或启动其他监听器。假设我的第一个监听器启动了第二个监听器 onSnapshot .第一个监听器开始于 useEffect .对于某些情况,我可能不想更改第二个监听器,因此我需要丢弃来自第一个监听器的数据更改更新。
如果条件满足(单击按钮),我会暂时丢弃第一个监听器上的数据更改。目前,我正在使用带有 useRef 的 bool 值来执行此操作。 .我的 react 应用程序运行良好,有这样的依赖监听器。 我可以删除监听器,但我不想删除并重新创建监听器。
我想知道是否有可供任何听众使用的暂停机制或方法。我认为如果有这样的方法,它会节省很小的读取成本,因为我没有使用在快照上发送的数据。
代码示例:

useEffect(() => {
let firstListener, secondListener;
//console.log("useEffect...");

function ListenerFunc(p) {
secondListener = await firestore
.collection("test")
.doc(p)
.onSnapshot((doc) => {
//console.log("Current data: ", doc.data());

//Need to discard unwanted change here.
//Changing it on button click for a 2 seconds then it changes back to : pauser.current = false.
if (pauser.current) {
console.log("paused for a moment.");
//pauser.current = false;
return;
}
else {
//update.
}
})
}

firstListener = firestore
.collection("test")
.doc("tab")
.onSnapshot((doc) => {
//console.log("Current data: ", doc.data());
var p = doc.data().p; //get variable p

ListenerFunc(p);
});
// cleanup.
}

最佳答案

不幸的是,这是不可能的。如果您需要停止监听更改,即使是暂时的,当您想再次开始监听时,您必须分离您的监听器并附加一个新的监听器,监听器没有暂停机制。
您可以在 Google's Issue Tracker 中打开功能请求如果您希望产品团队可以考虑这一点,但鉴于此 GitHub Feature Request for the IOS SDK 中已经提出了这一建议。它被拒绝了,我认为这不会很快发生变化。

关于reactjs - 有什么方法可以在不删除它的情况下暂停 Firestore 监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67053462/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com