【发布时间】:2018-05-27 21:56:52
【问题描述】:
我最近遇到了
“只能更新一个挂载或挂载的组件。”
在进行异步获取调用后尝试设置状态时出现错误消息。这是因为在 http 响应返回之前组件已卸载。
然后我开始用谷歌搜索,并找到了问题的解决方案。
如果一个变量保持“已挂载”状态,并且每次我想更新状态时,我都会检查该变量怎么办?像 safeSetState() 函数一样?
这是一个例子:
componentDidMount = () => {
this._mounted = true;
}
componentWillUnmount = () => {
this._mounted = false;
}
safelySetState = (obj) => {
if(this._mounted)
this.setState(obj);
}
然后,每次我想更新状态时,我都会改用 this.safelySetState() 函数。
所以我的问题是:为什么我不应该这样做?为什么这不是 React 中的默认设置?
【问题讨论】:
-
要添加到@andriusain 提供的答案,当您调用
safelySetState()并且它没有设置状态时会发生什么?当您的应用突然做出一些意想不到的事情,因为它认为设置了一个实际上没有设置的状态时,您试图“绕过”一个错误,您正在制造其他问题。
标签: reactjs asynchronous react-native fetch fetch-api