我有两个组件 A 和 B。当 A 呈现时,它会在 firebase 实时数据库中侦听 messageRef 的 child_ added 事件。
state = {
messagesRef: firebase.database().ref("privateMessages")
};
addListeners = currentUserUid => {
this.state.messagesRef.on("child_added", snap => {
...
}
}
但是组件 B 将从 A 呈现,并且它也具有相同引用的相同侦听器。在这种情况下,我如何选择只将 B 的侦听器设为活动状态,而禁用 A 的侦听器?现在,我通过显式调用.off()A 的所有侦听器,然后调用.on(). 代码 snipeet 如下所示。它在某种程度上解决了我的问题。但我不知道这是否合法,如果不合法,是否有更好的方法。谢谢!
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 => {
...
}
}
慕森卡
相关分类