当前位置:首页 > VUE

vue定时器简单实现

2026-02-09 18:42:36VUE

定时器的基本使用

在Vue中可以使用JavaScript原生的setTimeoutsetInterval实现定时功能。setTimeout用于延迟执行一次,setInterval用于周期性重复执行。

// 一次性定时器
setTimeout(() => {
  console.log('延迟执行');
}, 1000);

// 周期性定时器
const timer = setInterval(() => {
  console.log('每隔1秒执行');
}, 1000);

// 清除定时器
clearInterval(timer);

在Vue组件中使用

在Vue组件中,通常需要将定时器存储在组件的datasetup中,以便在组件销毁时清除定时器,避免内存泄漏。

Options API写法:

vue定时器简单实现

export default {
  data() {
    return {
      timer: null
    }
  },
  mounted() {
    this.timer = setInterval(() => {
      console.log('定时执行');
    }, 1000);
  },
  beforeUnmount() {
    clearInterval(this.timer);
  }
}

Composition API写法:

import { onMounted, onBeforeUnmount } from 'vue';

export default {
  setup() {
    let timer = null;

    onMounted(() => {
      timer = setInterval(() => {
        console.log('定时执行');
      }, 1000);
    });

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

使用Vue的ref管理定时器

在Composition API中,可以使用ref来管理定时器,使代码更加清晰。

vue定时器简单实现

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

export default {
  setup() {
    const timer = ref(null);

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

    onBeforeUnmount(() => {
      clearInterval(timer.value);
    });
  }
}

封装可复用的定时器Hook

可以将定时器逻辑封装成可复用的Composition API Hook。

// useInterval.js
import { ref, onBeforeUnmount } from 'vue';

export function useInterval(callback, delay) {
  const timer = ref(null);

  const start = () => {
    timer.value = setInterval(callback, delay);
  };

  const stop = () => {
    if (timer.value) {
      clearInterval(timer.value);
      timer.value = null;
    }
  };

  onBeforeUnmount(stop);

  return { start, stop };
}

使用示例:

import { useInterval } from './useInterval';

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

    // 启动定时器
    start();

    // 5秒后停止定时器
    setTimeout(() => {
      stop();
    }, 5000);
  }
}

注意事项

定时器需要在组件销毁时清除,否则会导致内存泄漏和意外行为。在Options API中使用beforeUnmount生命周期,在Composition API中使用onBeforeUnmount钩子。

周期性定时器比一次性定时器更需要关注清理问题,特别是在单页应用(SPA)中,组件频繁创建和销毁的场景下。

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

相关文章

vue实现简单的弹窗

vue实现简单的弹窗

Vue实现简单弹窗的方法 使用v-if和v-show控制显示 通过Vue的指令v-if或v-show可以轻松控制弹窗的显示与隐藏。v-if会完全销毁和重建DOM元素,而v-show仅通过CSS的di…

vue简单实现删除

vue简单实现删除

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

vue简单的列表实现

vue简单的列表实现

实现简单的 Vue 列表 在 Vue 中实现列表功能通常使用 v-for 指令。以下是一个基础的列表实现示例: <template> <div> <ul&g…

vue实现定时器

vue实现定时器

在Vue中实现定时器的方法 在Vue中实现定时器可以通过JavaScript原生的setInterval和setTimeout方法,结合Vue的生命周期钩子函数来管理定时器的创建和销毁。 使用set…

react实现简单的modal

react实现简单的modal

实现 React Modal 的基本方法 使用 React 创建一个简单的 Modal 组件可以通过以下方式实现: 创建 Modal 组件文件 import React from "react";…

制作简单css

制作简单css

基础CSS结构 CSS(层叠样式表)用于控制网页的样式和布局。一个简单的CSS文件通常包含选择器和声明块。选择器用于定位HTML元素,声明块包含属性和值,用于定义样式。 /* 选择器 */ body…