页面中定义一个定时器,在哪个阶段清除

页面中定义一个定时器,在哪个阶段清除

解决方案一:在组件销毁前清除  

mounted(){
 this.timer = setInterval(()=>{
    console.log(1)
 },1000)
},
beforeDestroy(){
 clearInterval(this.timer)
}

它需要在这个组件实例中保存这个 timer,如果可以的话最好只有生命周期钩子可以访问到它。这并不算严重的问题,但是它可以被视为杂物。

解决方案二(推荐):

mounted(){
 const timer = setInterval(()=>{
    console.log(1)
 },1000)
 this.$once("hook:beforeDestroy",()=>{
  clearInterval(timer)
 })
}

使用了这个策略,每个新的实例都程序化地在后期清理它自己