当前位置:首页 > VUE

vue定时器简单实现

2026-03-27 03:36:10VUE

使用 setInterval 实现定时器

在 Vue 中可以通过 setInterval 实现简单的定时器功能。在组件的 mounted 钩子中启动定时器,并在 beforeDestroy 钩子中清除定时器以避免内存泄漏。

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

使用 setTimeout 实现单次定时器

如果需要单次延迟执行,可以使用 setTimeout

vue定时器简单实现

export default {
  data() {
    return {
      timer: null
    }
  },
  mounted() {
    this.timer = setTimeout(() => {
      console.log('延迟执行')
    }, 1000)
  },
  beforeDestroy() {
    clearTimeout(this.timer)
  }
}

使用 Vue 3 的 Composition API

在 Vue 3 中,可以使用 onMountedonUnmounted 生命周期钩子结合 ref 实现定时器。

vue定时器简单实现

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

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

    onMounted(() => {
      timer = setInterval(() => {
        count.value++
        console.log('定时器执行中', count.value)
      }, 1000)
    })

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

    return { count }
  }
}

封装可复用的定时器逻辑

可以将定时器逻辑封装为可复用的函数,方便在多个组件中使用。

// utils/timer.js
export function useTimer(callback, interval) {
  let timer = null

  const start = () => {
    timer = setInterval(callback, interval)
  }

  const stop = () => {
    clearInterval(timer)
  }

  return { start, stop }
}

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

export default {
  setup() {
    const { start, stop } = useTimer(() => {
      console.log('定时器执行')
    }, 1000)

    onMounted(start)
    onUnmounted(stop)
  }
}

注意事项

定时器在组件销毁时必须清除,否则会导致内存泄漏。在 Vue 2 中使用 beforeDestroy 钩子,在 Vue 3 中使用 onUnmounted 钩子。

避免在定时器回调中直接修改大量数据,可能导致性能问题。如果需要更新大量数据,可以考虑使用 requestAnimationFrame 或节流/防抖技术优化性能。

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

相关文章

css3制作简单动画

css3制作简单动画

CSS3 制作简单动画的方法 CSS3 提供了多种方式制作动画,主要通过 transition、transform 和 animation 属性实现。以下是几种常见的实现方法。 使用 transit…

vue 实现简单登录

vue 实现简单登录

实现 Vue 简单登录功能 创建登录组件 在 Vue 项目中创建一个登录组件 Login.vue,包含用户名和密码输入框以及登录按钮。 <template> <div clas…

vue实现简单拖拽

vue实现简单拖拽

Vue 实现简单拖拽功能 在 Vue 中实现拖拽功能可以通过 HTML5 的拖放 API 或第三方库(如 vuedraggable)来完成。以下是两种常见的实现方式: 使用 HTML5 拖放 API…

vue  简单菜单实现

vue 简单菜单实现

实现简单菜单的步骤 在 Vue 中实现一个简单的菜单,可以通过以下方法完成: 使用 v-for 动态渲染菜单项 在 Vue 的模板中,使用 v-for 遍历菜单数据,动态生成菜单项。 <…

vue 实现简单分页

vue 实现简单分页

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

vue实现简单登录注册

vue实现简单登录注册

Vue 实现登录注册功能 项目初始化 使用 Vue CLI 创建项目 vue create auth-demo cd auth-demo 安装必要依赖 npm install axios vue-…