作为React新 手,刚开始的时候经常遇到这种报错,字面意思是:无法对卸载的的组件执行响应状态更新,也就是卸载后的组件不能设置state状态。
警告全文:
Can't perform a React state update on an unmounted component.
This is a no-op, but it indicates a memory leak in your application.
To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method”
这种问题一般是由于延时设置state值,或者是异步状态下设置state值导致的。
解决方案代码如下:
1. 如果代码中有定时器一类的延时设置state状态的代码,可以在组件销毁时清除定时器
//如果代码中有定时器一类的延时设置state状态的代码,可以在组件销毁时清除定时器
componentWillUnmount() {
clearTimeout(timer);
}
2. 如果有异步设置state值的情况,在组件销毁时清除所有的state状态
//如果有异步设置state值的情况,在组件销毁时清除所有的state状态
componentWillUnmount() {
this.setState = (state, callback) => {
return
}
}