前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在Vue.js中实现倒计时计时器

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

原创
作者头像
泽霖
发布2024-02-03 16:01:44
2850
发布2024-02-03 16:01:44

服务水平协议(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腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档