vue实现页面刷新,倒计时不重置

项目一般进行短信验证之类时,会有这个需求;在点击按钮获取短信验证码倒计时的时候,页面刷新倒计时不会被初始化。

<template>
    <div>
        <button @click="handleClick">{{ disabled ? timeCount + ' s' : '按钮' }}</button>
    </div>
</template>

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

// 按钮是否禁用
const disabled = ref(false)
// 固定时间
const seconds = ref(30)
// 倒计时
const timeCount = ref(30)

onMounted(() => {
    let startTime = sessionStorage.getItem('start')
    let diffTime = (+new Date() - startTime) / 1000;
    let result = seconds.value - parseInt(diffTime);
    if (result > 0) {
        disabled.value = true;
        timeCount.value = result;
        handleCount()
    }
})

// 点击事件
const handleClick = () => {
    // 按钮被禁用结束
    if(disabled.value) return
    console.log('true')
    disabled.value = true;
    handleCount();
    sessionStorage.setItem('start', +new Date());
}

// 处理倒计时
const handleCount = () => {
    let timer = setInterval(() => {
        timeCount.value -= 1;
        if (timeCount.value === 0) {
            clearInterval(timer);
            disabled.value = false;
            timeCount.value = seconds.value;
            sessionStorage.removeItem('start')
        }
    }, 1000)
}

</script>
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值