当前位置: 首页 > 面试题库 >

在卸载组件之前是否真的需要清除计时器?

壤驷建德
2023-03-14
问题内容

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


问题答案:

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

因此,在该componentWillUnmount函数中,您需要清除计时器,该计时器可以通过以下方式返回:setInterval

如React DOCS中所述:

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

例:

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

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

副作用:

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



 类似资料:
  • 本文向大家介绍组件卸载前,加在DOM元素的监听事件和定时器要不要手动清除?为什么?相关面试题,主要包含被问及组件卸载前,加在DOM元素的监听事件和定时器要不要手动清除?为什么?时的应答技巧和注意事项,需要的朋友参考一下 [react] 组件卸载前,加在DOM元素的监听事件和定时器要不要手动清除?为什么?

  • 好吧,这是一个奇怪的,我甚至不认为是可能的。 所以,自从我使用Nexus5X以来,当我卸载应用程序时,SharedPreferences就不会被删除。 我通过Android Studio安装了这个应用程序并进行了测试。然后我卸载应用程序。然后我通过Android Studio重新发布了这个应用程序,所有的SharedPreferences值仍然存在。 知道是什么引起的吗?

  • 当用户卸载我的应用程序时,我需要能够清除我的应用程序的内部存储目录。我该怎么做? 我正处于构建安全应用程序的测试阶段,该应用程序要求在应用程序首次安装到用户手机时由管理员设置ID。ID文件不能在外部存储中,因为我不想任何篡改。 如果管理员向用户提供了不正确的 ID,他们将无法通过立即卸载应用程序来解决此问题。我已尝试卸载该应用程序(并清除缓存等)以清除ID数据。重新安装应用程序后,文件仍然存在,因

  • 是否需要在之前调用?为什么?我看不出有什么不同,但我看到很多人这样做。

  • 问题内容: 我正在编写一个简单的应用程序,以使用AES / CBC(模式)对我的消息进行加密。据我了解,CBC模式需要IV参数,但我不知道为什么我的代码在不使用IV参数的情况下也能工作。任何人都可以解释为什么?谢谢。 打印的加密消息:T9KdWxVZ5xStaisXn6llfg ==毫无例外。 问题答案: 不带IV使用时,对于包括AES在内的某些类型的密码,它将隐式使用0 IV。请参阅Cipher

  • 问题内容: java中的try … catch … finally块共有3种排列。 试着抓 尝试…抓住…最后 尝试…最后 一旦执行了finally块,控制权将移至finally块之后的下一行。如果我删除了finally块并将其所有语句移到try … catch块之后的行,那么与将它们放入finally块中的效果相同吗? 问题答案: 我认为willcode最接近在这里表达关键点,也许每个人都知道,但