封装倒计时函数

1.js封装部分

// 封装倒计时逻辑函数
import {computed, onUnmounted, ref} from 'vue';
// 这里要使用npm install dayjs安装也可以查看官网安装
import dayjs from 'dayjs';
export const useCountDown = ()=> {
  let timeout = null;
  // 1.响应式数据
  const time = ref(0);
  // 2.start方法接收传入的时间参数为incomingTime
  const start = (incomingTime)=>{
    time.value = incomingTime;
    timeout = setInterval(() => {
      time--;
    }, 1000);
  }
  // 3.格式化时间 为 xx分xx秒
  const formatTime = computed(()=>{dayjs.unix(time.value).format('mm分ss秒')});
  // 4.组件销毁清除定时器防止内存溢出
  onUnmounted(()=>{
    timeout && clearInterval(timeout);
  })
  return {
    start,
    formatTime
  }
}

2.调用方法和使用页面相关代码

<template>
  <div>
    <div class="tip">
      <p>订单提交成功! 请尽快完成支付。</p>
      <p>支付还剩<span>{{ formatTime }}</span>, 超时后将取消订单</p>
    </div>
  </div>
</template>

<script setup>
import { ref } from 'vue';
import { useRoute } from 'vue-router';
import { getOrdeAPI } from '@/api/order';
import { useCountDown } from '@/composables/useCountDown';
// 解构赋值
const {start, formatTime} = useCountDown();
// 获取路由参数调用useRoute=>const route = useRoute();、使用路由跳转useRouter=>const router = useRouter();
const route = useRoute();
// 获取订单数据
const payInfo = ref({});
const getPayInfo = async ()=>{
  const res = await getOrdeAPI(route.query.id);
  payInfo.value = res.result;
  // 初始化倒计时秒数
  start(res.result.countdown);
}
onMounted(() => {getPayInfo()})
</script>
<style scoped lang='less'>
</style>

3.效果如图:
在这里插入图片描述

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值