安全设置反应 - 反模式还是良好实践?

时间:2018-05-27 21:56:53

标签: reactjs asynchronous react-native fetch fetch-api

我最近遇到了

  

"只能更新已安装或安装的组件。"

异步提取调用后我尝试设置状态时出现

错误消息。之所以发生这种情况是因为组件在http响应返回之前已卸载。

然后我开始谷歌搜索,并找到了解决问题的方法。

如果一个变量持有" mount" -state,每次我想更新状态,我会检查变量怎么办?像safelySetState()函数一样?

以下是一个例子:

componentDidMount = () => {
  this._mounted = true;
}

componentWillUnmount = () => {
  this._mounted = false; 
}

safelySetState = (obj) => {
  if(this._mounted)
    this.setState(obj);
}

然后,每次我想更新状态时,我只会使用this.safelySetState()函数。

所以我的问题是:我为什么不这样做?为什么这在React中已经默认为

1 个答案:

答案 0 :(得分:0)

我猜它在React中不是默认值,因为它超出了它们的范围。如果不能设置这个状态,那么默默地无所事事就不会很好。相反,它们是合乎逻辑的,它们会抛出一个错误,所以它们会让你知道它无法完成,并留下你想要处理的错误。

另外,我会因为出于同样的原因总是使用你的功能而警惕......它可以使你的应用程序调试有点困难和模糊......可能你应该在外部实现它,而不是作为一个函数......但是内联使用剩下的代码,只针对真正需要它的边缘情况......或者至少在组件不可用时记录警告