经常看到事件监听,定时器的销毁,在这两个钩子中都使用过,很迷
我感觉区别不是很大,beforeDestory在destory之前,有时候可能会在beforeRouteLeave里面去清除定时器,缓存的组件路由切换的时候,建议清除定时器。
已参与了 SegmentFault 思否「问答」打卡,欢迎正在阅读的你也加入。
看你的业务逻辑。
如果你想在销毁前,还想用实例做一些什么事情,就可以在beforeDestory
中处理。否则的话,在destory
中即可。
已参与了 SegmentFault 思否「问答」打卡,欢迎正在阅读的你也加入。
beforeDestory 在页面实例销毁前做一些事情
应用场景: 比如用户在提交form表单时,在内容填写 到 提交表单过程中,有后退或其他操作时可以在这个钩子提示内容尚未提交或保存,是否退出之类的
简单来说,就是一些你写 定时器/全局监听 事件,如果没有被销毁的话,会一直存在当前项目所有的生命周期中。
单纯的销毁组件并不会销毁定时器/监听事件,最终可能会影响页面出现卡顿或者 data
一直被反复修改。
所以需要在组件销毁时去清理这些东西,具体还有什么不明白的可以在评论里追问,可以逐步解答,笼统的只能这样描述了。
已参与了 SegmentFault 思否「问答」打卡,欢迎正在阅读的你也加入。
2 回答4.9k 阅读✓ 已解决
4 回答4.5k 阅读✓ 已解决
4 回答2k 阅读✓ 已解决
4 回答2.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
3 回答4.9k 阅读
2 回答2.6k 阅读✓ 已解决
vue组件销毁前后的回调,常用于处理一些具有负面影响的代码,如定时器,事件监听等。他们的不同就是内部环境的不同,beforeDestroy时实例还未销毁,仍然完全可用,destroyed时,此时Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。
具体在哪使用,看个人选择和代码逻辑,比如你要处理vue实例,那就必须在beforeDestroy中,处理定时器那哪里都可以