组件销毁后异步队列执行setState导致的内存泄漏


在组件销毁的时候,任务队列里面还有在触发setState的操作,会出现可能内存泄漏的问题。比如常见场景:在B页面详情页发起请求获取数据修改state的值,但是还没等到数据取回来用户又执行了返回A页面的操作,但是请求还在继续,里面的代码还会执行。


真实场景(下图):

在一个详情页,点击一个暂未开放的功能会弹出一个Toast,3秒后会消失,但是还没等到消失就返回上一页了,详情页的组件已经销毁了,但是详情页的setState过3秒后还会执行,然后就弹出上面的警告。

解决办法:

出现的原因是因为组件已经卸载了,可是异步的请求或者异步的操作还在执行。可以在组件销毁前把异步的操作取消。反正有好几种解决方法。

你可能感兴趣的:(组件销毁后异步队列执行setState导致的内存泄漏)