当前位置:首页 > VUE

vue定时器简单实现

2026-03-06 18:35:00VUE

在Vue中实现定时器的简单方法

使用setIntervalsetTimeout创建定时器,注意在组件销毁时清除定时器避免内存泄漏

vue定时器简单实现

export default {
  data() {
    return {
      timer: null,
      count: 0
    }
  },
  mounted() {
    this.timer = setInterval(() => {
      this.count++
      console.log('定时器执行中', this.count)
    }, 1000)
  },
  beforeDestroy() {
    clearInterval(this.timer)
  }
}

使用Vue的$once方法自动清理

利用Vue实例的$once监听钩子函数,实现自动清除定时器

vue定时器简单实现

mounted() {
  const timer = setInterval(() => {
    // 定时器逻辑
  }, 1000)

  this.$once('hook:beforeDestroy', () => {
    clearInterval(timer)
  })
}

使用Composition API实现

在Vue3中使用setup和生命周期钩子实现定时器

import { onMounted, onBeforeUnmount, ref } from 'vue'

export default {
  setup() {
    const count = ref(0)
    let timer = null

    onMounted(() => {
      timer = setInterval(() => {
        count.value++
      }, 1000)
    })

    onBeforeUnmount(() => {
      clearInterval(timer)
    })

    return { count }
  }
}

封装可复用的定时器逻辑

创建可复用的定时器函数,便于在多个组件中使用

// utils/timer.js
export function useInterval(callback, delay) {
  const savedCallback = ref()

  savedCallback.value = callback

  onMounted(() => {
    function tick() {
      savedCallback.value()
    }
    if (delay !== null) {
      let id = setInterval(tick, delay)
      onBeforeUnmount(() => clearInterval(id))
    }
  })
}

// 组件中使用
import { useInterval } from '@/utils/timer'

export default {
  setup() {
    const count = ref(0)

    useInterval(() => {
      count.value++
    }, 1000)

    return { count }
  }
}

标签: 定时器简单
分享给朋友:

相关文章

简单实现vue

简单实现vue

实现一个简易 Vue 框架 以下是一个基于 JavaScript 的简易 Vue 实现,核心功能包括数据响应式、模板编译和依赖收集。 数据响应式 通过 Object.defineProperty 实…

vue 实现简单分页

vue 实现简单分页

Vue 实现简单分页的方法 基础分页组件实现 创建一个基础分页组件,包含页码按钮和翻页功能。以下是一个基于 Vue 3 的示例: <template> <div class="…

vue简单实现删除

vue简单实现删除

Vue 删除功能实现 使用 v-for 和 splice 方法删除数组元素 <template> <div> <ul> <li v-…

vue实现简单分页

vue实现简单分页

实现基础分页功能 在Vue中实现简单分页需要几个核心步骤:数据分片、页码计算、翻页逻辑。以下是一个基于Vue 3的示例实现方案: <template> <div>…

vue实现简单的store

vue实现简单的store

Vue 实现简单的 Store 在 Vue 中可以通过多种方式实现简单的状态管理(Store),以下介绍几种常见方法: 使用 Vue 的响应式 API 通过 reactive 或 ref 创建响应式…

vue实现简单弹幕效果

vue实现简单弹幕效果

实现基础弹幕效果 在Vue中实现弹幕效果需要结合CSS动画和动态数据渲染。以下是一个基础实现方案: 模板部分 <template> <div class="danmu-con…