当前位置:首页 > 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写法:

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来管理定时器,使代码更加清晰。

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钩子。

vue定时器简单实现

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

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

相关文章

简单实现vue github

简单实现vue github

实现 Vue 项目并托管到 GitHub 的步骤 创建 Vue 项目 使用 Vue CLI 快速初始化项目,确保已安装 Node.js 和 npm/yarn。 运行命令: npm init vu…

vue实现简单分页

vue实现简单分页

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

vue底部导航简单实现

vue底部导航简单实现

使用 Vue Router 实现底部导航 在 Vue 项目中,可以通过 Vue Router 和自定义组件实现底部导航。以下是一个简单的实现示例: 安装 Vue Router(如果尚未安装):…

简单的vue实现原理

简单的vue实现原理

Vue 的实现原理 Vue 的核心实现原理主要包括响应式系统、虚拟 DOM 和模板编译。以下是这些核心概念的简要说明: 响应式系统 Vue 通过 Object.defineProperty(Vue…

react销毁组件如何清除定时器

react销毁组件如何清除定时器

清除定时器的基本方法 在React组件销毁时,必须手动清除定时器以避免内存泄漏。通常在组件的componentWillUnmount生命周期方法(类组件)或useEffect的清理函数(函数组件)中执…

react实现定时器

react实现定时器

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