vue倒计时功能组件,可天时分秒倒计时

 分类:vue教程时间:2024-09-02 07:30:02点击:

创建一个Vue倒计时功能组件涉及到使用Vue的响应式系统和定时器。以下是一个简单的Vue倒计时组件示例,它接受一个结束时间,并从那时开始倒计时,可以实现天、时、分、秒倒计时。

首先,创建一个名为CountdownTimer.vue的新文件:

<template>
  <div class="countdown-timer">
    <p>{{ days }}天, {{ hours }}小时, {{ minutes }}分钟, {{ seconds }}秒</p>
  </div>
</template>

<script>
export default {
  name: 'CountdownTimer',
  props: {
    endTime: {
      type: Number,
      required: true
    }
  },
  data() {
    return {
      days: 0,
      hours: 0,
      minutes: 0,
      seconds: 0
    };
  },
  mounted() {
    this.interval = setInterval(() => {
      this.tick();
    }, 1000);
  },
  beforeDestroy() {
    clearInterval(this.interval);
  },
  methods: {
    tick() {
      const now = Date.now();
      const distance = this.endTime - now;

      if (distance < 0) {
        this.clearTimer();
        this.days = this.hours = this.minutes = this.seconds = 0;
        return;
      }

      this.days = Math.floor(distance / (1000 * 60 * 60 * 24));
      const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
      this.hours = hours < 10 ? '0' + hours : hours;
      const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
      this.minutes = minutes < 10 ? '0' + minutes : minutes;
      const seconds = Math.floor((distance % (1000 * 60)) / 1000);
      this.seconds = seconds < 10 ? '0' + seconds : seconds;
    },
    clearTimer() {
      clearInterval(this.interval);
    }
  }
};
</script>

<style scoped>
.countdown-timer p {
  /* 你的样式 */
}
</style>

在这个组件中:

    - 我们定义了一个props,名为endTime,它是一个数字类型,表示倒计时结束的Unix时间戳(毫秒)。

    - 我们使用data来存储倒计时的天、小时、分钟和秒。

    - 在mounted生命周期钩子中,我们设置了一个定时器,每秒调用一次tick方法。

    - 在beforeDestroy生命周期钩子中,我们清除定时器以防止内存泄漏。

    - tick方法计算当前时间与结束时间之间的差值,并据此更新天、小时、分钟和秒。

    - 如果倒计时结束,我们调用clearTimer方法来清除定时器,并重置倒计时数值。

    使用这个组件时,你需要传入一个endTime属性,例如:

<template>
  <div>
    <countdown-timer :endTime="endTime"></countdown-timer>
  </div>
</template>

<script>
import CountdownTimer from './CountdownTimer.vue';

export default {
  components: {
    CountdownTimer
  },
  data() {
    return {
      endTime: new Date('2024-12-31').getTime() // 设置结束时间
    };
  }
};
</script>

请确保你将endTime设置为一个有效的Unix时间戳(毫秒),并且它代表你希望倒计时结束的日期和时间。这个组件会从那个时间开始倒计时,并实时更新。

除注明外的文章,均为来源:老汤博客,转载请保留本文地址!
原文地址: