为了账号安全,请及时绑定邮箱和手机立即绑定

如果两个组件侦听相同的数据库引用,我可以选择运行哪个侦听器吗?

如果两个组件侦听相同的数据库引用,我可以选择运行哪个侦听器吗?

子衿沉夜 2021-10-14 16:51:07
我有两个组件 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个赞

你在做什么对我来说似乎没问题。让听众保持活动状态可能没有任何真正的危害,因为如果只有一个听众,同一位置的两个听众不会使使用的带宽量增加一倍。侦听器将有效地共享快照数据。


查看完整回答
反对 回复 2021-10-14
  • 1 回答
  • 0 关注
  • 131 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信