在Vue.js中实现倒计时计时器

2024-02-03 16:01:44 浏览数 (1)

服务水平协议(SLAs)通常有严格的时间要求,对剩余时间进行可视化表示非常重要。在本文中,我们将探讨如何在Vue.js中实现一个倒计时计时器,用于显示SLAs的剩余时间。

步骤1:设置Vue组件

代码语言:html复制
<template>
  <div>
    <span v-if="sla.expired" style="color: red;">{{ `SLA已过期` }}</span>
    <span v-else style="color: rgb(80, 180, 80)">{{ `${displayTime}` }}</span>
  </div>
</template>

<script>
import moment from 'moment';

export default {
  props: {
    sla: Object,
    created_at: String,
  },
  data() {
    return {
      intervalId: null,
      displayTime: '',
    };
  },
  mounted() {
    this.startCountdown();
  },
  beforeDestroy() {
    clearInterval(this.intervalId);
  },
  methods: {
    startCountdown() {
      const initialDate = moment(this.created_at).add(this.sla.time, 'hours');

      this.intervalId = setInterval(() => {
        const countdownDuration = initialDate.diff(moment());
        let secondsRemaining = moment.duration(countdownDuration).asSeconds();

        const hours = Math.floor(secondsRemaining / 3600);
        const minutes = Math.floor((secondsRemaining % 3600) / 60);
        const seconds = Math.floor(secondsRemaining % 60);

        this.displayTime = `${hours > 0 ? hours   '小时 ' : ''}${minutes}分钟 ${seconds}秒`;

        if (secondsRemaining <= 0) {
          clearInterval(this.intervalId);
          this.$set(this.sla, 'expired', true);
        }

        secondsRemaining--;
      }, 1000);
    },
  },
};
</script>

<style scoped>
</style>
  • 使用mounted生命周期钩子在组件挂载时启动倒计时。
  • 使用beforeDestroy钩子确保在组件销毁时清除定时器,以防止内存泄漏。
  • startCountdown方法计算剩余时间并相应地更新displayTime变量。
  • 倒计时以动态方式显示,当倒计时达到零时,SLA标记为已过期。

步骤2:使用倒计时计时器组件

代码语言:html复制
<template>
  <ul>
    <li v-for="(sla, j) in liquidasset.slas" :key="sla.id">
      <CountdownTimer :sla="sla" :created_at="liquidasset.created_at" />
    </li>
  </ul>
</template>

<script>
import CountdownTimer from '@/components/CountdownTimer.vue'; // 根据你的项目结构更新路径

export default {
  components: {
    CountdownTimer,
  },
  data() {
    return {
      liquidasset: {
        created_at: '2024-01-27T12:00:00', // 示例日期
        slas: [...], // 你的SLAs数组
      },
    };
  },
};
</script>

结论

在Vue.js中实现倒计时计时器可以提升用户体验,特别是在时间至关重要的场景中。通过将逻辑分解为可重用的组件,你可以轻松地在应用程序的各个部分集成倒计时计时器。

我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

0 人点赞