为了账号安全,请及时绑定邮箱和手机立即绑定

react里这种报错该怎么解决

react里这种报错该怎么解决

一只萌萌小番薯 2019-02-25 16:28:59
报错提示如下: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 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

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


查看完整回答
反对 回复 2019-03-01
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

首先恭喜您已经解决了!在忙着重构react没来得及看,真是抱歉!我就说说原因吧!

一般原因

这种错误一般出现在我们已经从DOM中移除了react组件,这时才调用setState改变组件的状态

举个比较常见的例子:我们在componentWillMount中发送异步请求,并且我们调用setState根据响应数据改变组件的状态,然后请求还未完成,我们改变了页面也就是移除该组件,就会报这个错误。这是因为虽然组件已经被移除,但是请求还在执行,所以会报setState() on an unmounted component的错误

如何解决?

我们只要在react组件被移除之前终止setState操作就可以了。

业务例子

  1. 定时器,在生命周期函数componentWillUnmount把定时器清除掉。

  2. 异步请求,用abort() 或 包裹Promise等 ,请求方式不一样,处理方法也不同!


查看完整回答
反对 回复 2019-03-01
  • 2 回答
  • 0 关注
  • 926 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信