控制台报错:Can't perform a React state update on an unmounted component...

149 阅读1分钟

在这里插入图片描述

切换组件渲染页面时,控制台提示需要cleanup function,一般造成这种提示的原因是计时器没有及时清除造成的内存泄露。setTimeout在执行完后会自动销毁,不需要手动销毁;setInterval不会自动销毁,需手动销毁。但是在快速切换组件时,使用setTimeout也有可能报上述错误,原因就是计时器销毁不及时,所以需要在页面销毁时,添加手动销毁计时器的代码。

解决方法:

let timerT
let timerL


useEffect(() => {
	timerT = setTimeout(() => {
		// 操作
	}, seconds)
	timerL = setInterval(() => {
		// 操作
	}, seconds)

	return () => { // 页面销毁时触发
		timerT && clearTimeout(timerT)
		timerL && clearInterval(timerL)
	}
}, [])