gpt4 book ai didi

javascript - 如果两个组件监听同一数据库引用,我可以选择运行哪个监听器吗?

转载 作者:行者123 更新时间:2023-12-01 00:38:16 25 4
gpt4 key购买 nike

我有两个组件 A 和 B。当 A 被渲染时,它会监听 firebase 实时数据库中 messagesRef 的 child_added 事件。

  state = {
messagesRef: firebase.database().ref("privateMessages")
};

addListeners = currentUserUid => {
this.state.messagesRef.on("child_added", snap => {
...
}
}

但是组件 B 将从 A 渲染,并且它也具有相同引用的相同监听器。在这种情况下,我如何选择仅将 B 的监听器设为事件状态,并禁用 A 的监听器?目前,我在 B 中有一个解决方法,即为所有 A 的监听器显式调用 .off(),然后调用 .on()。代码片段如下所示。它在一定程度上解决了我的问题。但我不知道这是否合法,如果不合法,是否有更好的方法。谢谢!

addListeners = currentUserUid => {
// explicitly .off all existing ones
this.state.messagesRef.off();
this.state.channels.forEach(channel => {
this.state.messagesRef.child(channel.id).off();
});

// then do .on() again
this.state.messagesRef.on("child_added", snap => {
...
}
}

最佳答案

你所做的事情对我来说似乎没问题。让监听器处于事件状态可能不会有任何真正的危害,因为如果只有一个监听器,同一位置的两个监听器不会使使用的带宽量增加一倍。监听者将有效地共享快照数据。

关于javascript - 如果两个组件监听同一数据库引用,我可以选择运行哪个监听器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57914614/

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