Vue中用JSON實(shí)現(xiàn)刷新界面不影響倒計(jì)時
本文實(shí)例為大家分享了Vue中用JSON實(shí)現(xiàn)刷新界面不影響倒計(jì)時的具體代碼,供大家參考,具體內(nèi)容如下
效果展示:

部分代碼
<el-form-item style="overflow:hidden" v-if="env === 'dev'">
<el-input style="width:180px; float:left" v-model="ruleForm.nucCode" size="small" placeholder="請輸入短信驗(yàn)證碼" />
<el-button class="message_btn" @click="getNumCode">
<span v-if="isShowNucTime" style="font-size:16px" >{{Nuc_time}} S</span>
<span v-else-if="!isShowNucTime && NucAgain" >重新獲取驗(yàn)證碼</span>
<span v-else style="color:#7fbfff" >獲取短信驗(yàn)證碼</span>
</el-button>
</el-form-item>
isShowNucTime:boolean = false;
NucAgain: boolean = false;
Nuc_code_freash: boolean = false; // 判斷驗(yàn)證碼是否過期
Nuc_time: number = 60;
end_time: number = 0;
private getCode() {
let clicktime = new Date().getTime() + 60000;
// 本地存儲
localStorage.setItem('myEndTime', JSON.stringify(clicktime));
this.timeDown(clicktime);
}
// 驗(yàn)證碼倒計(jì)時
timeDown(counttime: any) {
// 判斷是否正在倒計(jì)時
if (this.isShowNucTime) return;
this.userChange = false;
this.isShowNucTime = true;
this.isGetNucCode = true;
this.end_time = Number(localStorage.getItem('myEndTime'));
this.Nuc_time = Math.ceil((this.end_time - new Date().getTime()) / 1000);
let interval = setInterval(() => {
this.Nuc_time--;
if (this.Nuc_time < 1) {
this.Nuc_time = 60;
this.isShowNucTime = false;
localStorage.removeItem('myEndTime');
if (!this.userChange) {
this.NucAgain = true;
}
clearInterval(interval);
}
}, 1000)
}
private created(): void {
let myEndTime= localStorage.getItem('myEndTime');
myEndTime && this.timeDown(myEndTime);
}
重要的代碼部分


實(shí)現(xiàn)原理
1.首次加載頁面 點(diǎn)擊開始
1).獲取當(dāng)前時間戳與要倒計(jì)時的時間相加獲得要停止計(jì)時的時間
2).用localStorage保存當(dāng)前時間戳
3).通過js的setInterval定時器進(jìn)行倒計(jì)時
4).當(dāng)?shù)褂?jì)時結(jié)束后 清除localStorage中保存的結(jié)束時間
2.當(dāng)?shù)趎次進(jìn)入頁面或刷新頁面時
1).首先判斷l(xiāng)ocalStorage中倒計(jì)時是否結(jié)束
2).沒有結(jié)束則繼續(xù)倒計(jì)時
3).如果結(jié)束則顯示重新發(fā)送驗(yàn)證碼
- 主要運(yùn)用了localStorage + new Date().getTime()
- PS:本文只是展示部分代碼,一味的復(fù)制粘貼并不能運(yùn)行,還是搞清楚邏輯自己實(shí)現(xiàn)比較靠譜!
關(guān)于vue.js組件的教程,請大家點(diǎn)擊專題vue.js組件學(xué)習(xí)教程進(jìn)行學(xué)習(xí)。
更多vue學(xué)習(xí)教程請閱讀專題《vue實(shí)戰(zhàn)教程》
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
在vue中實(shí)現(xiàn)echarts隨窗體變化
這篇文章主要介紹了在vue中實(shí)現(xiàn)echarts隨窗體變化,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
el-upload大文件切片上傳實(shí)現(xiàn)示例詳解
這篇文章主要為大家介紹了el-upload大文件切片上傳實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
解決vue 子組件修改父組件傳來的props值報(bào)錯問題
今天小編就為大家分享一篇解決vue 子組件修改父組件傳來的props值報(bào)錯問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11
使用vue.js在頁面內(nèi)組件監(jiān)聽scroll事件的方法
今天小編就為大家分享一篇使用vue.js在頁面內(nèi)組件監(jiān)聽scroll事件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09

