在react中,组件的生命周期有一个阶段是卸载阶段。
componentWillUnmount ()
在这个钩子函数中,可以卸载或者销毁组件的数据以及结构
我们可以在这个组件中做以下的事情:
- clear你在组建中所有的setTimeout,setInterval
- 移除所有组建中的监听 removeEventListener
- componentWillUnmount() 中不应调用 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 undefined component.
其实不用管这事什么错误,就是异步操作为执行就组件已经销毁了,例如:axios请求的时候,页面还没有返回数据,组件就已经销毁,这时候就会报这个错误。
componentDidMount() {
this.flag=== true
axios.post().then((res) => {
if(flag){
this.setState({
aaa:res
})
}
})
}
componentWillUnmount() {
this.flag === false
}