案例场景:
我在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)
停止侦听一个事件