我有两个组件 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 => { ... }}
1 回答
慕森卡
TA贡献1806条经验 获得超8个赞
你在做什么对我来说似乎没问题。让听众保持活动状态可能没有任何真正的危害,因为如果只有一个听众,同一位置的两个听众不会使使用的带宽量增加一倍。侦听器将有效地共享快照数据。
添加回答
举报
0/150
提交
取消