如何停止对 componentWillUnmount 的 Firestore `get` 查询

Muh*_*Ovi 5 javascript firebase reactjs google-cloud-firestore

好的,所以我正在 componentDidMount 中从 Firestore 获取数据,但是如果我更改组件,它正在获取数据时我收到错误消息:

警告:无法在未安装的组件上调用 setState(或 forceUpdate)。这是一个空操作,但它表明您的应用程序中存在内存泄漏。要修复,请取消 componentWillUnmount 方法中的所有订阅和异步任务。

在 Firebase 实时数据库中,我们调用ref.off()停止查询。

想知道如何在 Firestore 中做到这一点

componentDidMount() {
  Users.get().then(({ docs }) => {
    const users = docs.map(user => user.data());
      this.setState({ users });
  });
}

componentWillUnmount(){

}
Run Code Online (Sandbox Code Playgroud)

Muh*_*Ovi 2

如果有人仍在寻找答案,我找到了一个解决方法:

componentDidMount() {
  this.mounted = true;

  Users.get().then(({ docs }) => {
    const users = docs.map(user => user.data());
      if(this.mounted) this.setState({ users });
  });
}

componentWillUnmount(){
  this.mounted = false;
}
Run Code Online (Sandbox Code Playgroud)

this.mounted当组件被卸载并且 setState 不起作用时将为 false。