最近,我遇到了fetch()
的问题,并且setState()
返回到未安装的组件,从而导致错误。
我正在寻找一种不涉及redux或取消fetch()的简单解决方案。
部分解决方案可能是使用局部变量this._isMounted
,该变量在componentDidMount
设置为true,在componentWillUnMount
设置为false
现在,如果您执行:
if (this._isMounted) setState({whatever})
这几乎完成了。 漏洞是条件检查之后到setState()完成之前的时间段。 有没有办法通过信号量来解决这个问题。
例如,通过等待componentWillUnmount
信号灯来延迟this._isMounted
对setState()
的访问?
在某些情况下,延迟听起来可能很糟糕并且不合适,但是在进行IMO操作的情况下,信号量和旧式操作系统解决方案似乎确实相关。