好吧,所以我要从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(){
}
答案 0 :(得分: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;
}
this.mounted
将为false,当卸载组件且setState将不起作用时。
答案 1 :(得分:0)
由于Get
不是实时方法,因此无法在componentWillUnmont上停止它,因此一旦卸载组件,就不应调用它。