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 XXX component.
错误警告是我们可能对一个没有装载的组件执行了setState()操作,在React的官网里有一个解决办法,isMounted
出现的原因:
这种情况通常出现在callback中,我们的异步请求返回数据之前,组件可能就已经被卸载了,等数据回来再使用setState()j就会报出上面的警告,所以我们应该手动在componentWillUnmount里去取消callback在它被unmounting之前。
解决办法:
我们可以使用一个标志位_isMounted,在componentDidMount里设置为true,在componentWillUnmount里设置为false,仅当_isMounted为true即还未被卸载,才执行setState()
我的代码:
componentDidMount () {
this._isMounted = true