Firebase:如何停止收听快照
Posted
技术标签:
【中文标题】Firebase:如何停止收听快照【英文标题】:Firebase: How to stop listening to snapshot 【发布时间】: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()
。抱歉含糊其辞,但这是我现在能说的最好的了。
【参考方案1】:
在我看来,您只想在MyPresenter
上创建一个名为“stop()”或类似的方法,从而取消订阅。然后,在您的组件中,在其componentWillUnmount()
期间调用presenter.stop()
。
【讨论】:
谢谢,这很有意义。添加另一个问题只是为了解决这个问题。引用文档`这允许客户端停止使用带宽来接收更新。 `。如果我从不取消订阅,客户端会在什么时候停止接收更新?当我的标签关闭时,我假设? 如果您不停止收听,那么只要您的应用保持打开状态,它就会继续接收更新。如果您关闭选项卡或刷新页面,所有上下文都会丢失,您必须再次收听才能获得更新。以上是关于Firebase:如何停止收听快照的主要内容,如果未能解决你的问题,请参考以下文章
从 Firebase 实时将数据存储在本地 Room DB 上