我最近遇到了
异步提取调用后我尝试设置状态时出现"只能更新已安装或安装的组件。"
错误消息。之所以发生这种情况是因为组件在http响应返回之前已卸载。
然后我开始谷歌搜索,并找到了解决问题的方法。
如果一个变量持有" mount" -state,每次我想更新状态,我会检查变量怎么办?像safelySetState()函数一样?
以下是一个例子:
componentDidMount = () => {
this._mounted = true;
}
componentWillUnmount = () => {
this._mounted = false;
}
safelySetState = (obj) => {
if(this._mounted)
this.setState(obj);
}
然后,每次我想更新状态时,我只会使用this.safelySetState()函数。
所以我的问题是:我为什么不这样做?为什么这在React中已经默认为
答案 0 :(得分:0)
我猜它在React中不是默认值,因为它超出了它们的范围。如果不能设置这个状态,那么默默地无所事事就不会很好。相反,它们是合乎逻辑的,它们会抛出一个错误,所以它们会让你知道它无法完成,并留下你想要处理的错误。
另外,我会因为出于同样的原因总是使用你的功能而警惕......它可以使你的应用程序调试有点困难和模糊......可能你应该在外部实现它,而不是作为一个函数......但是内联使用剩下的代码,只针对真正需要它的边缘情况......或者至少在组件不可用时记录警告