首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在卸载组件之前,真的有必要清除定时器吗?

问在卸载组件之前,真的有必要清除定时器吗?
EN

Stack Overflow用户
提问于 2017-07-18 06:05:10
回答 1查看 2K关注 0票数 7

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-18 06:08:38

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

因此,在componentWillUnmount函数中,需要清除定时器,它可以由setInterval返回的数值标识

如DOCS反应文件中所述:

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

示例:

代码语言:javascript
复制
componentDidMount() {
    this.timerID = setInterval(
      () => this.somefunc(),
      1000
    );
  }

  componentWillUnmount() {
    clearInterval(this.timerID);
  }

SideEffect:

假设在计时器中进行API调用,从中获取在组件中显示的数据。现在,如果您从组件中导航,则通常不希望一次又一次地调用API,即使不需要结果。这将导致服务器上不必要的负载。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45158702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档