在vue项目开发过程中我偶然发现当组件生命周期销毁后,并没有将组件中的计时器销毁,虽然页面上看不出来,但是如果在浏览器控制台打印的话,会发现计时器还在运行,所以要销毁计时器,避免代码一直执行.
网上有很多方法,我这边试验后的是beforeDestroy里写清除函数
这里需要介绍一些$once的使用
vm.$once(eventName,callback) 监听一个自定义事件,但是只触发一次,在第一次触发之后移除监听器。

const timer = setInterval(() =>{  
// 定时器操作  
}, 500);  
// 通过$once来监听定时器,在beforeDestroy钩子函数内被清除。  
this.$once('hook:beforeDestroy', () => {  
clearInterval(timer);  
})

Banshee
124 声望5 粉丝

To die is to die, to live is to suffer