vue里的destory和beforeDestory应该应用于什么场景

经常看到事件监听,定时器的销毁,在这两个钩子中都使用过,很迷

阅读 10.1k
5 个回答

vue组件销毁前后的回调,常用于处理一些具有负面影响的代码,如定时器,事件监听等。他们的不同就是内部环境的不同,beforeDestroy时实例还未销毁,仍然完全可用,destroyed时,此时Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。

具体在哪使用,看个人选择和代码逻辑,比如你要处理vue实例,那就必须在beforeDestroy中,处理定时器那哪里都可以

已参与了 SegmentFault 思否「问答」打卡,欢迎正在阅读的你也加入。

我感觉区别不是很大,beforeDestory在destory之前,有时候可能会在beforeRouteLeave里面去清除定时器,缓存的组件路由切换的时候,建议清除定时器。

已参与了 SegmentFault 思否「问答」打卡,欢迎正在阅读的你也加入。

看你的业务逻辑。
如果你想在销毁前,还想用实例做一些什么事情,就可以在beforeDestory中处理。否则的话,在destory中即可。

已参与了 SegmentFault 思否「问答」打卡,欢迎正在阅读的你也加入。

beforeDestory 在页面实例销毁前做一些事情
应用场景: 比如用户在提交form表单时,在内容填写 到 提交表单过程中,有后退或其他操作时可以在这个钩子提示内容尚未提交或保存,是否退出之类的

简单来说,就是一些你写 定时器/全局监听 事件,如果没有被销毁的话,会一直存在当前项目所有的生命周期中。
单纯的销毁组件并不会销毁定时器/监听事件,最终可能会影响页面出现卡顿或者 data 一直被反复修改。
所以需要在组件销毁时去清理这些东西,具体还有什么不明白的可以在评论里追问,可以逐步解答,笼统的只能这样描述了。

已参与了 SegmentFault 思否「问答」打卡,欢迎正在阅读的你也加入。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题