当前位置:首页 > VUE

vue实现倒计时

2026-01-11 20:20:04VUE

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>

使用 computed 格式化显示时间

通过 computed 属性将秒数格式化为 分钟:秒 的形式,提升可读性。

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

<script>
export default {
  data() {
    return {
      countdown: 120 // 初始倒计时时间(秒)
    };
  },
  computed: {
    formattedTime() {
      const minutes = Math.floor(this.countdown / 60);
      const seconds = this.countdown % 60;
      return `${minutes}:${seconds < 10 ? '0' + seconds : seconds}`;
    }
  },
  mounted() {
    setInterval(() => {
      if (this.countdown > 0) {
        this.countdown--;
      }
    }, 1000);
  }
};
</script>

使用 Vue 3 Composition API 实现倒计时

在 Vue 3 中,可以通过 refonMounted 等 Composition API 实现倒计时功能。

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

<script>
import { ref, onMounted, onBeforeUnmount } from 'vue';

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

    const startCountdown = () => {
      timer = setInterval(() => {
        if (countdown.value > 0) {
          countdown.value--;
        } else {
          clearInterval(timer);
        }
      }, 1000);
    };

    onMounted(startCountdown);
    onBeforeUnmount(() => clearInterval(timer));

    return { countdown };
  }
};
</script>

结合 localStorage 实现持久化倒计时

通过 localStorage 存储倒计时剩余时间,确保页面刷新后倒计时继续。

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

<script>
export default {
  data() {
    return {
      countdown: localStorage.getItem('countdown') || 60
    };
  },
  mounted() {
    this.timer = setInterval(() => {
      if (this.countdown > 0) {
        this.countdown--;
        localStorage.setItem('countdown', this.countdown);
      } else {
        clearInterval(this.timer);
        localStorage.removeItem('countdown');
      }
    }, 1000);
  },
  beforeDestroy() {
    clearInterval(this.timer);
  }
};
</script>

使用第三方库 vue-countdown

如果需要更复杂的倒计时功能,可以使用第三方库如 vue-countdown

安装依赖:

npm install vue-countdown

使用示例:

<template>
  <vue-countdown :time="60 * 1000" v-slot="{ minutes, seconds }">
    {{ minutes }}:{{ seconds }}
  </vue-countdown>
</template>

<script>
import VueCountdown from 'vue-countdown';

export default {
  components: { VueCountdown }
};
</script>

以上方法涵盖了从基础实现到高级功能的多种倒计时方案,可以根据实际需求选择适合的方式。

vue实现倒计时

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

相关文章

vue实现签约合作弹窗

vue实现签约合作弹窗

实现签约合作弹窗的步骤 使用Vue实现签约合作弹窗可以通过组件化方式完成,结合模态框和表单交互逻辑。以下是具体实现方法: 1. 创建弹窗组件 新建一个Vue组件文件(如SignContractDi…

vue  select实现

vue select实现

Vue Select 实现方法 在 Vue 中实现下拉选择功能可以使用原生 <select> 标签或第三方库如 vue-select。以下是两种方法的详细说明: 原生 HTML Sele…

vue实现切换

vue实现切换

Vue 实现切换功能的方法 在 Vue 中实现切换功能可以通过多种方式实现,以下是一些常见的方法: 使用 v-if 和 v-else 指令 通过条件渲染实现切换功能,适用于简单的显示/隐藏场景…

vue实现骰子

vue实现骰子

Vue 实现骰子功能 创建 Vue 组件 在 Vue 项目中创建一个骰子组件,例如 Dice.vue。该组件包含骰子的外观和逻辑。 <template> <div class…

vue实现购票

vue实现购票

Vue 实现购票功能 数据结构设计 购票功能通常需要以下数据结构: 场次信息(时间、地点、价格) 座位信息(可选座位、已售座位) 用户订单信息 示例数据结构: data() { return…

vue代理实现

vue代理实现

Vue 代理实现方法 在 Vue 项目中,配置代理可以解决开发环境下的跨域问题,通常通过修改 vue.config.js 文件实现。以下是几种常见的代理配置方式: 基础代理配置 在 vue.conf…