vue中销毁定时器的几种解决方案
作者:ldcaws
这篇文章主要给大家介绍了关于vue中销毁定时器的几种解决方案,销毁定时器的操作一般是在beforeDestroy钩子中进行,根据定时器的数量不同可以有多种解决方法,需要的朋友可以参考下
引言
vue是单页面应用,路由切换后,定时器并不会自动关闭,需要手动清除,当页面被销毁时,清除定时器即可。
场景:在A.vue页面有一个定时a,然后跳转到B.vue页面,此时A页面的定时器a依然在运行。
解决方式一:
- 首先在data里进行定义定时器;
data() { return { timer: null // 定时器名称 } },
- 然后在mounted里使用定时器;
this.timer= setInterval(() => { // 操作 method(); }, 60000);
- 最后在beforeDestroy里清除定时器;
beforeDestroy() { if (this.timer) { clearInterval(this.timer); } },
解决方式二:
通过$once这个事件侦听器在定义完定时器之后的位置来清除定时器。
this.timer= setInterval(() => { // 操作 method(); }, 60000); // 通过$once来监听定时器,在beforeDestroy钩子可以被清除 this.$once('hook:beforeDestroy', () => { clearInterval(this.timer); })
解决方式三:
beforeRouteLeave(to, from, next){ next(); if (this.timer) { clearInterval(this.timer); this.timer = null; } },
附:vue离开页面时清除定时器
let timer = setInterval(function(){ console.log("我是定时器====="); },2000); this.$once("hook:beforeDestroy", () =>{ clearInterval(timer); });
总结
到此这篇关于vue中销毁定时器的几种解决方案的文章就介绍到这了,更多相关vue销毁定时器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!