当前位置:首页 > 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 实现简单搜索功能 数据绑定与输入框 在 Vue 中实现搜索功能,通常使用 v-model 绑定输入框的值到数据属性。创建一个输入框用于用户输入搜索关键词: <template>…

实现简单的vue

实现简单的vue

创建Vue项目 使用Vue CLI快速初始化项目,确保已安装Node.js和npm/yarn: npm install -g @vue/cli vue create my-vue-app cd my…

vue 实现简单分页

vue 实现简单分页

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

react实现定时器

react实现定时器

使用 setInterval 实现定时器 在 React 中,可以通过 setInterval 实现定时器功能。需要在组件挂载时启动定时器,并在组件卸载时清除定时器以避免内存泄漏。 import…

react简单实现树形控件

react简单实现树形控件

实现树形控件的基本思路 树形控件的核心是递归渲染节点,每个节点可以包含子节点。通过状态管理展开/折叠状态,动态渲染可见部分。 基础代码结构 创建一个可复用的树形组件,包含以下关键部分: imp…

react实现简单的modal

react实现简单的modal

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