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

Javascript 如何停止对componentWillUnmount的Firestore`get`查询,javascript,reactjs,firebase,google-cloud-firestore,Javascript,Reactjs,Firebase,Google Cloud Firestore,好的,我正在从componentDidMount中的Firestore获取数据,但是当它获取数据时,如果我更改了组件,我会得到一个错误消息: 警告:无法在未安装的服务器上调用setState(或forceUpdate) 组成部分。这是一个no op,但它表明您的内存中存在内存泄漏 应用若要修复,请取消所有订阅和异步任务 在componentWillUnmount方法中 在Firebase实时数据库中,我们调用ref.off()停止查询 想知道在Firestore怎么做 componentDidM

好的,我正在从componentDidMount中的Firestore获取数据,但是当它获取数据时,如果我更改了组件,我会得到一个错误消息:

警告:无法在未安装的服务器上调用setState(或forceUpdate) 组成部分。这是一个no op,但它表明您的内存中存在内存泄漏 应用若要修复,请取消所有订阅和异步任务 在componentWillUnmount方法中

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

想知道在Firestore怎么做

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

componentWillUnmount(){

}

由于
Get
不是一种实时方法,因此无法在componentWillUnmont上停止它,因此在卸载组件后不应调用它。

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

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;
}

this.mounted
在卸载组件时将为false,设置状态将不起作用。

我认为没有办法中止正在进行的
get()
操作。对于
onSnapshot()
您可以返回一个订阅,您可以调用该订阅来取消订阅,但是
get
在我看来没有。我如何才能取消
onSnapshot()
上的订阅?请看,这并不是真的中止不必要的获取或保存网络带宽,它只是抑制了
React
关于内存泄漏的警告