Warning: setState(...): Can only update a mounted or mounting component. This usually means you call

类似这个错误

出现这个错误,大部分是因为使用了fetch获取数据,并在then中调用了setState()

class Overall extends Component {

    componentDidMount() {
        this.fetchData();
    }

    fetchData(){
        fetch(url).then(() => {
            this.setState({...});    // 获取 返回数据
        })
    }

    ....
}

如果Overall 组件unmount 后才获取返回数据,那么此时该组件已经unmounted,调用this.setState() 会弹出警告

我们应该避免,在已经unmounted component中调用 setState(),同时,需要思考为什么我们需要调用setState(),如果在unmounted中调用setState,意味着程序仍然保留这个组件的引用,会浪费内存。如果有必要,我们应该把这些数据存在store中。

另一种思路,取消fetch请求。

解决方法
https://reactjs.org/blog/2015/12/16/ismounted-antipattern.html

相关文章

一、前言 在组件方面react和Vue一样的,核心思想玩的就是组件...
前言: 前段时间学习完react后,刚好就接到公司一个react项目...
前言: 最近收到组长通知我们项目组后面新开的项目准备统一技...
react 中的高阶组件主要是对于 hooks 之前的类组件来说的,如...
我们上一节了解了组件的更新机制,但是只是停留在表层上,例...
我们上一节了解了 react 的虚拟 dom 的格式,如何把虚拟 dom...