通常,在从DOM中卸载组件之前,将清除计时器。但是,如果我们忘记清除定时器,会有什么副作用呢?
发布于 2017-07-18 06:08:38
假设您在某个函数中调用了一个timer,当您导航到另一个组件并且您的当前组件具有unmounted时,如果您不清除计时器,您的函数将继续被执行。
因此,在componentWillUnmount函数中,需要清除定时器,它可以由setInterval返回的数值标识
如DOCS反应文件中所述:
在卸载和销毁组件之前立即调用
componentWillUnmount()。在此方法中执行任何必要的清理,例如使计时器无效、取消网络请求或清理在componentDidMount中创建的所有DOM元素。
示例:
componentDidMount() {
this.timerID = setInterval(
() => this.somefunc(),
1000
);
}
componentWillUnmount() {
clearInterval(this.timerID);
}SideEffect:
假设在计时器中进行API调用,从中获取在组件中显示的数据。现在,如果您从组件中导航,则通常不希望一次又一次地调用API,即使不需要结果。这将导致服务器上不必要的负载。
https://stackoverflow.com/questions/45158702
复制相似问题