vue中通过router路由进行跳转的页面,写的定时器无法清除,该如何解决?

如何清除定时器?

  • 例如:在vue页面中写了一个定时器,并且离开当前页面,在**beforeDestory()**方法中进行了清除,但是定时器并未清除,还在继续执行,这种情况该如何解决?
 data() {
    return {
        timer : null 
    }
 }
created(){
    this.currTime = 0;
    this.timer = setInterval(() => {
        this.currTime++;
    }, 1000)
  },

解决方法:(与methods 同级)

  beforeRouteLeave(to, from, next){
    next();
    if (this.timer) {
      clearInterval(this.timer);
      this.timer = null;
    }
  },

下面写法不生效(不予采纳)

  beforeDestroy () {
    // console.log('执行销毁方法');
    if(this.timer) { //如果定时器还在运行 或者直接关闭,不用判断
      clearInterval(this.timer); //关闭
    }
  },

版权声明:本文为Missbelover原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。