在卸载组件之前真的有必要清除计时器吗?



通常,在从DOM卸载组件之前,计时器将被清除。但是,如果我们忘记清除计时器会有什么副作用?

假设您在某个函数中调用timer,当您导航到另一个组件并且当前组件具有unmounted时,如果您不清除计时器,您的函数将继续执行。

因此,在componentWillUnmount函数中,您需要清除计时器,该计时器可以通过返回的数值来识别setInterval

正如 React DOCS 中提到的:

componentWillUnmount()在组件之前立即调用 卸载并销毁。在此方法中执行任何必要的清理, 例如使计时器失效、取消网络请求或清理 up在componentDidMount中创建的任何DOM元素

例:

componentDidMount() {
this.timerID = setInterval(
() => this.somefunc(),
1000
);
}
componentWillUnmount() {
clearInterval(this.timerID);
}

副作用:

考虑这样一种情况:在计时器中进行 API 调用,从中获取组件中显示的数据。现在,如果您离开组件,即使您不需要结果,您通常也不希望一次又一次地调用 API。这将导致服务器上不必要的负载。

最新更新