在 componentWillUnmount 中需要取消订阅 Firestore / React

IT技术 javascript reactjs firebase react-router google-cloud-firestore
2021-05-05 01:07:27

我有一个位于特定路线的组件:

<Route path='/route-path' component={MyComponent} /> 

在这个组件中,我所有的 firestore 侦听器都是在 componentDidMount 中创建的,如下所示:

componentDidMount() {
   var unsubscribe = db.collection(name)
       .where("query", "==", false)
       .onSnapshot((querySnapshot) => {
          // do something
       })
}

如果路由发生变化,是否需要取消订阅此侦听器?就像是:

componentWillUnmount() {
  unsusbscribe() // from componentDidMount
}

或者这是由路由更改自动处理的,即 websocket 关闭连接?

1个回答

Firestore SDK 没有关于 ReactJS 和/或其生命周期事件的隐含知识。

您需要使用自己的代码取消订阅。它不是自动完成的。