VUE项目如何优雅的解决定时器问题

790 阅读1分钟

案例场景:

我在A页面写一个定时器,每秒钟打印一个1,然后跳转到B页面,此时可以看到,定时器依然在执行。这样是非常消耗性能的

解决办法:

const time = setInterval(() =>{                    
    console.log('1')                
}, 1000);            
// 通过$once来监听定时器,在beforeDestroy钩子被清除。
this.$once('hook:beforeDestroy', () => {            
    clearInterval(time);                                    
})

方法原理: (vue文档转送门

通过 $on(eventName, eventHandler) 侦听一个事件 

通过 $once(eventName, eventHandler) 一次性侦听一个事件

通过 $off(eventName, eventHandler) 停止侦听一个事件