React使用setTimeout是否有必要清除定时器,为什么?

React使用setTimeout是否有必要清除定时器,为什么?

阅读 9.4k
4 个回答

倒不是性能的问题,关键在于无法确保回调函数不会在组件卸载后调用。一旦出现该情况,this将变成undefined,代码会报错。

从这个角度看,任何异步事件都应该在组件卸载时取消订阅/监听,包括pub/sub、dom事件等

有的,所有的单页应用都应该主动清除。
为什么呢?因为是单页应用,定时器是运行后是存在内存中的,即使切换路由,也还是在这个页面没有离开,所以还是会继续运行的。
为什么传统页面不需要清除呢?因为传统页面是多页的,点击一个链接不是跳转路由,而是打开一个新的页面,旧页面内存中的数据都被自动清除了。

定时器 组建销毁是建议还是清楚 影响性能

要,否则当你离开页面之后,如果定时器触发,而你又读取了this之类的参数,直接undefined错误

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题