【问题标题】:Firebase: How to stop listening to snapshotFirebase:如何停止收听快照
【发布时间】:2018-12-04 12:43:54
【问题描述】:

我有一个 javascript 应用程序,它使用 onSnapshot 侦听器来侦听我的 firebase 集合中的更改。当我不再需要听众时,文档告诉我取消订阅。在 React 中,我会在 componentWillUnmount() 中执行此操作,但如果我在 vanilla 类(不是 React)中设置了侦听器,在这种情况下我将如何取消订阅?

我是如何实现它的...

class MyComponent extends React.Component {
  constructor() {
    super();
    this.presenter = new MyPresenter();
  }
  ...rest of component

class MyPresenter {
    constructor() {
      const listener = db.collection("cities")
        .onSnapshot(function () {});
    }
}

【问题讨论】:

  • 当您不再需要更新时,您将停止收听。鉴于目前的信息,不可能知道什么时候应该这样做。你必须弄清楚这一点。
  • @DougStevenson 我已将我的问题更新为更清晰
  • 您在应用程序生命周期的某个位置调用此构造函数。您应该在其生命周期的相反位置调用unsubscribe()。抱歉含糊其辞,但这是我现在能说的最好的了。

标签: javascript reactjs firebase listener google-cloud-firestore


【解决方案1】:

在我看来,您只想在MyPresenter 上创建一个名为“stop()”或类似的方法,从而取消订阅。然后,在您的组件中,在其componentWillUnmount() 期间调用presenter.stop()

【讨论】:

  • 谢谢,这很有意义。添加另一个问题只是为了解决这个问题。引用文档`这允许客户端停止使用带宽来接收更新。 `。如果我从不取消订阅,客户端会在什么时候停止接收更新?当我的标签关闭时,我假设?
  • 如果您不停止收听,那么只要您的应用保持打开状态,它就会继续接收更新。如果您关闭选项卡或刷新页面,所有上下文都会丢失,您必须再次收听才能获得更新。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-11
  • 2019-01-25
  • 1970-01-01
  • 1970-01-01
  • 2013-10-13
  • 2016-09-19
相关资源
最近更新 更多