react里这种报错该怎么解决

报错提示如下:

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是接受另外一个组建传过来的数据):

https://img1.mukewang.com/5c78d0160001246606030894.jpg

这里附上stackflow里的答案,但是看了下不是很清楚。点击链接

一只萌萌小番薯
浏览 927回答 2
2回答

至尊宝的传说

在componentWillUnmount生命周期把你这个定时器clear掉

慕桂英3389331

首先恭喜您已经解决了!在忙着重构react没来得及看,真是抱歉!我就说说原因吧!一般原因这种错误一般出现在我们已经从DOM中移除了react组件,这时才调用setState改变组件的状态。举个比较常见的例子:我们在componentWillMount中发送异步请求,并且我们调用setState根据响应数据改变组件的状态,然后请求还未完成,我们改变了页面也就是移除该组件,就会报这个错误。这是因为虽然组件已经被移除,但是请求还在执行,所以会报setState() on an unmounted component的错误。如何解决?我们只要在react组件被移除之前终止setState操作就可以了。业务例子定时器,在生命周期函数componentWillUnmount把定时器清除掉。异步请求,用abort() 或 包裹Promise等 ,请求方式不一样,处理方法也不同!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript