美文网首页
vue中定时器的销毁和创建(踩坑)

vue中定时器的销毁和创建(踩坑)

作者: 扶得一人醉如苏沐晨 | 来源:发表于2023-03-02 09:19 被阅读0次

一、准备工作

1.1、数据源定义

data () {
    return {
      timer: ''
    }
  },

1.2、封装清除定时器方法

 clearTimer () {
    this.timer && clearInterval(this.timer)
 }

这里解释一下

  this.timer && clearInterval(this.timer)
  等价于-----------------------------------
  if(this.timer) clearInterval(this.timer)

二、方式一

2.2、使用

   setTimer () {
      // 调用之前先清除一遍定时器
      this.clearTimer()
      this.timer = setInterval(() => {
      }, 1000)
    },

2.3、销毁

beforeDestroy () {
    this.clearTimer()
}

三、方式二

 setTimer () {
      // 调用之前先清除一遍定时器
      this.clearTimer()
      // 调用之前先清除一遍定时器
      this.timer = setInterval(() => 
      }, 1000)
      this.$once('hook:beforeDestroy', () => {
        this.clearTimer()
      })
    },

四、注意

被包含在 keep-alive 中创建的组件,会多出两个生命周期的钩子: activated 、deactivated
activated是当 keepalive 包含的组件再次渲染的时候触发
deactivated是当 keepalive 包含的组件销毁的时候触发
被缓存的组件是不会走beforeDestroy生命周期
这个时候就要使用 deactivated生命周期去销毁定时器

4.1、方式一销毁

deactivated() {
    this.clearTimer()
}

4.1、方式二销毁

 setTimer () {
      // 调用之前先清除一遍定时器
      this.clearTimer()
      // 调用之前先清除一遍定时器
      this.timer = setInterval(() => 
      }, 1000)
      this.$once('hook:deactivated', () => {
        this.clearTimer()
      })
    },

相关文章

  • VUE中定时器如何使用?

    定时器的创建和使用 定时器的销毁 定时器 setTimeout()方法 和 setInterval() 使用方法相...

  • NSTimer定时器的销毁

    定时器的销毁 1、如果是在VC中创建的定时器,需要在dealloc方法中销毁 2、有时会自定义View,并且在这个...

  • Vue @hook

    使用之前我们在Vue使用定时器的时候,在创建定时器的时候,当页面不存在的时候需要销毁定时器。我们一般会这样使用 但...

  • Vue踩坑实录(二)

    在上一篇中说了一下踩过的前三个坑,剩下的坑就在这篇中全部搞定吧。Vue踩坑实录(一) Vue-cli .js?.V...

  • vue中定时器的设置和销毁

    方案1(推荐): 该方法是通过$once这个事件侦听器器在定义完定时器之后的位置来清除定时器。 const tim...

  • vue踩过的坑

    vue踩过的坑

  • Vue的生命周期和钩子函数

    Vue的生命周期 Vue示例被创建到销毁的过程 Vue的钩子函数详解

  • vue 生命周期

    生命周期 从创建vue实例到销毁的过程

  • 我的前端笔记

    目录 react 小程序 vue typescript 经验(踩坑) react useMemo 和 useCal...

  • vue中bus.$on事件被多次绑定

    vue中eventbus被多次触发(vue中使用eventbus踩过的坑)【bus.$on事件被多次绑定】 问题描...

网友评论

      本文标题:vue中定时器的销毁和创建(踩坑)

      本文链接:https://www.haomeiwen.com/subject/hftdldtx.html