当前位置:首页 > VUE

vue倒计时实现

2026-01-22 18:45:40VUE

Vue 倒计时实现方法

使用 setInterval 基础实现

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

<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>

使用计算属性格式化显示

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

<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中如何实现循环

在 Vue 中实现循环 Vue 提供了 v-for 指令用于实现循环渲染列表数据。v-for 可以遍历数组、对象或数字范围,生成动态的 DOM 元素。 遍历数组 使用 v-for 遍历数组时,语法为…

vue实现双折线图

vue实现双折线图

实现双折线图的步骤 安装必要的依赖库(如 ECharts 或 Chart.js),这里以 ECharts 为例: npm install echarts --save 在 Vue 组件中引入 EC…

vue优秀实现

vue优秀实现

Vue.js 优秀实现方法 响应式数据管理 使用 Vue 的 ref 和 reactive 处理基础类型和对象类型数据,结合 computed 计算属性优化渲染性能。对于复杂状态,推荐 Pinia 替…

vue组件实现

vue组件实现

Vue 组件实现基础 Vue 组件是 Vue.js 的核心特性之一,允许将 UI 拆分为独立、可复用的模块。组件的实现包括定义、注册、数据传递和生命周期管理等。 定义组件 组件可以通过单文件组件(…

vue实现visual

vue实现visual

Vue 实现可视化(Visual)的常见方法 在 Vue 中实现可视化通常涉及数据可视化库的集成,以下是几种主流方案: 使用 ECharts ECharts 是一个强大的 JavaScript…

vue datepicker 实现

vue datepicker 实现

实现 Vue Datepicker 的基本方法 在 Vue 项目中实现日期选择功能,可以使用第三方库如 vue-datepicker 或 v-calendar。以下是两种常见实现方式: 安装 vue…