以下介绍两种事件及定时器的清除方法
方法一:在beforeDestroy生命周期销毁
// 方法一:
beforeDestroy() {
eventBus.$off('getData') // 清除事件
clearInterval(this.timer) // 清除定时器
}
*注意公共eventBus事件的销毁是使用$off,在beforeDestroy生命周期我们可以进行一些销毁操作
方法二:在事件及定时器的方法或者生命周期函数中声明并销毁
// 方法二:
mounted() {
eventBus.$on('getData', data => {
// todo
console.log(data)
this.$once('hook:beforeDestroy', () => {
eventBus.$off('getData') // 清除事件
clearInterval(this.timer) // 清除定时器
})
})
}
使用hook:beforeDestroy方法的好处在于结合this.$once直接创建声明并销毁,无需vue实例中创建定时器或者其他实例,往往创建定时器和销毁定时器的代码没有放在一起,很容易忘记去清理。