React使用setTimeout是否有必要清除定时器,为什么?
有的,所有的单页应用都应该主动清除。
为什么呢?因为是单页应用,定时器是运行后是存在内存中的,即使切换路由,也还是在这个页面没有离开,所以还是会继续运行的。
为什么传统页面不需要清除呢?因为传统页面是多页的,点击一个链接不是跳转路由,而是打开一个新的页面,旧页面内存中的数据都被自动清除了。
13 回答12.8k 阅读
7 回答1.9k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答889 阅读✓ 已解决
4 回答1.6k 阅读
6 回答1.1k 阅读
倒不是性能的问题,关键在于无法确保回调函数不会在组件卸载后调用。一旦出现该情况,this将变成undefined,代码会报错。
从这个角度看,任何异步事件都应该在组件卸载时取消订阅/监听,包括pub/sub、dom事件等