解决react报错:index.js:1 Warning: 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.
报错信息如下:
首先,这个报错的意思是说:在路由快速切换时,数据还没有拿回来,页面就已经销毁了,而当数据拿回来了去执行this.setState()时,找不到组件而报错。
清楚问题后,解决的办法有两个:
第一种:在生命周期UNSAFE_componentWillMount里面取消所有该页面尚未完成的请求:
var xhr = new XMLHttpRequest(); xhr.abort();
第二种:使用react组件this里面的updater属性上的isMounted方法判断组件是否存在,如果不存在,就return,不再去设置setState。
if (this.updater.isMounted(this)) { this.setState({ dashBoardDate: otherDashBoardDate }) } else { return }