报错提示如下:Warning: setState(...): Can only update a mounted or mounting component. This usually means you called setState() on an unmounted component. This is a no-op. Please check the code for the Timer component.这里是我的代码(这里的props是接受另外一个组建传过来的数据):这里附上stackflow里的答案,但是看了下不是很清楚。点击链接
2 回答
慕桂英3389331
TA贡献2036条经验 获得超8个赞
首先恭喜您已经解决了!在忙着重构react没来得及看,真是抱歉!我就说说原因吧!
一般原因
这种错误一般出现在我们已经从DOM中移除了react组件,这时才调用setState改变组件的状态
。
举个比较常见的例子:
我们在componentWillMount中发送异步请求,并且我们调用setState根据响应数据改变组件的状态,然后请求还未完成,我们改变了页面也就是移除该组件,就会报这个错误。这是因为虽然组件已经被移除,但是请求还在执行,所以会报setState() on an unmounted component的错误
。
如何解决?
我们只要在react组件被移除之前终止setState操作就可以了。
业务例子
定时器,在生命周期函数componentWillUnmount把定时器清除掉。
异步请求,用
abort()
或包裹Promise
等 ,请求方式不一样,处理方法也不同!
添加回答
举报
0/150
提交
取消