当前位置:首页 > VUE

vue倒计时实现

2026-01-22 18:45:40VUE

Vue 倒计时实现方法

使用 setInterval 基础实现

在 Vue 组件中,通过 data 定义倒计时初始值,使用 setInterval 实现倒计时逻辑,并在组件销毁时清除定时器。

vue倒计时实现

<template>
  <div>{{ countdown }}</div>
</template>

<script>
export default {
  data() {
    return {
      countdown: 60, // 初始值(单位:秒)
      timer: null
    };
  },
  mounted() {
    this.startCountdown();
  },
  methods: {
    startCountdown() {
      this.timer = setInterval(() => {
        if (this.countdown > 0) {
          this.countdown--;
        } else {
          clearInterval(this.timer);
        }
      }, 1000);
    }
  },
  beforeDestroy() {
    clearInterval(this.timer);
  }
};
</script>

使用计算属性格式化显示

通过计算属性将秒数格式化为 分钟:秒 的显示形式,提升用户体验。

vue倒计时实现

<template>
  <div>{{ formattedTime }}</div>
</template>

<script>
export default {
  data() {
    return { countdown: 125 }; // 示例:2分5秒
  },
  computed: {
    formattedTime() {
      const minutes = Math.floor(this.countdown / 60);
      const seconds = this.countdown % 60;
      return `${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;
    }
  }
};
</script>

封装可复用组件

将倒计时逻辑封装为可复用的组件,支持通过 props 传递初始时间和回调函数。

<template>
  <div>{{ timeLeft }}</div>
</template>

<script>
export default {
  props: {
    initialTime: { type: Number, default: 60 },
    onEnd: { type: Function, default: () => {} }
  },
  data() {
    return { timeLeft: this.initialTime };
  },
  mounted() {
    const timer = setInterval(() => {
      this.timeLeft--;
      if (this.timeLeft <= 0) {
        clearInterval(timer);
        this.onEnd();
      }
    }, 1000);
  }
};
</script>

使用第三方库(如 dayjs

对于复杂的时间处理(如跨天倒计时),可使用 dayjs 等库简化计算。

import dayjs from 'dayjs';

export default {
  data() {
    return { endTime: dayjs().add(1, 'hour') };
  },
  computed: {
    remainingTime() {
      const now = dayjs();
      return this.endTime.diff(now, 'second');
    }
  }
};

注意事项

  • 定时器需在 beforeDestroyunmounted 生命周期中清除,避免内存泄漏。
  • 移动端需考虑页面休眠时定时器暂停的问题,可通过监听 visibilitychange 事件处理。
  • 服务端渲染(SSR)场景下,需避免 setInterval 在服务端执行。

标签: 倒计时vue
分享给朋友:

相关文章

vue怎么实现文件树

vue怎么实现文件树

Vue 实现文件树的方法 使用递归组件 递归组件是处理嵌套数据结构的理想方式。文件树通常包含文件夹和文件的嵌套结构,适合用递归组件实现。 <template> <ul>…

vue 实现在线预览

vue 实现在线预览

Vue 实现在线预览的常见方法 使用 iframe 嵌入 通过 iframe 标签可以嵌入多种类型的文件,如 PDF、图片、网页等。需要确保文件地址可访问。 <template> &…

vue实现右下角弹框

vue实现右下角弹框

实现右下角弹框的基本思路 在Vue中实现右下角弹框,通常需要结合CSS定位和Vue的组件化特性。弹框可以通过绝对定位固定在右下角,并通过Vue控制其显示与隐藏。 创建弹框组件 新建一个Vue组件(如…

js实现vue

js实现vue

Vue.js 的基本实现方法 在 JavaScript 中实现 Vue.js 的功能,可以通过直接引入 Vue 库或使用现代构建工具(如 Vite 或 Webpack)。以下是几种常见的实现方式:…

vue实现ai

vue实现ai

Vue 实现 AI 功能 Vue.js 可以通过集成第三方 AI 服务或本地 AI 模型来实现 AI 功能。以下是几种常见的方法: 集成第三方 AI API 使用 Vue 调用如 OpenAI、Go…

vue实现帖子

vue实现帖子

Vue 实现帖子功能 使用 Vue 实现帖子功能需要结合前端框架和后端数据交互,以下是实现的关键步骤和代码示例。 帖子列表展示 创建帖子列表组件,使用 v-for 渲染帖子数据,通过 axios…