當前位置:名人名言大全網 - 端午節短信 - 如何用Vue實現倒計時按鈕

如何用Vue實現倒計時按鈕

這次,我將為您帶來如何使用Vue實現倒計時按鈕。使用Vue實現倒計時按鈕有哪些註意事項?下面是壹個實際案例。讓我們來看看。

在項目開發中,我們經常會遇到壹個發送驗證碼的按鈕,點擊後會有60秒的倒計時。很常見但是很簡單,但是寫這個按鈕的時候有壹些地方需要註意。今天就寫。如果妳有任何問題,請指正!

完成後的效果如下:

為了更快地顯示效果,我將時間設置為5秒。按鈕被點擊後,會有倒計時,同時按鈕會變成不可點擊,樣式也會發生變化,鼠標的外觀也會發生變化。

接下來,我們使用代碼來實現它:

& ltbutton class =“button“@ click =“count down“& gt;

{ {內容}}

& lt/button & gt;

...

data(){

返回{

內容:‘發送驗證碼’,//按鈕中顯示的內容。

TotalTime: 60 //記錄具體的倒計時時間。

}

},

方法:{

倒計時(){

let clock = window . setinterval(()= & gt;{

這。總計-

This.content = this.total+“然後再次發送“

},1000)

}

}數據中添加了兩條數據,壹條用於記錄時間,另壹條用於保存倒計時按鈕的具體內容。在倒計時功能中,我們使用setInterval計時器每秒從totalTime中減去1,同時更改按鈕中顯示的內容。window.setInterval中使用了arrow函數,因為它會自動綁定外部this,所以不需要先保存this。

效果如下:

但是這個按鈕仍然存在壹些問題:

點擊按鈕後,直接從59秒倒數到1秒,中間的60消失了。

倒計時時也可以點擊。

倒計時尚未清除。

接下來,我們需要繼續完善倒計時功能來解決這些問題。

倒計時(){

This.content = this.totalTime+的並重新發送‘//在這裏,錯過60秒的問題得到了解決。

let clock = window . setinterval(()= & gt;{

這。總時間-

this . content = this . total time+‘然後再次發送‘

if(this . total time & lt;0){//當倒計時小於0時清除計時器。

window.clearInterval(時鐘)

This.content =“重新發送驗證碼”

this.totalTime = 60

}

},1000)

},上面的代碼解決了60缺失的問題,同時,當totalTime小於0時,它會清除同步器,重置按鈕中的內容,並將totalTime重置為60以供下次使用。

倒計時10秒的效果:

當發現bug時,多次點擊後反向語音的速度會變得更快,因為每次點擊都會啟動壹個setInterval,而這些setInterval會減少總時間。解決方法也很簡單:只需節流即可,即第壹次單擊按鈕後,countdown函數的代碼無法執行,只能在倒計時結束後再次執行。

data(){

返回{

內容,‘發送驗證碼‘,

總時間:10,

CanClick: true //添加CanClick

}

}

...

倒計時(){

如果(!this . can click)return//更改這兩行代碼。

this.canClick = false

this . content = this . total time+‘然後再次發送‘

let clock = window . setinterval(()= & gt;{

這。總時間-

this . content = this . total time+‘然後再次發送‘

if(this . total time & lt;0) {

window.clearInterval(時鐘)

This.content =“重新發送驗證碼”

this.totalTime = 10

This.canClick = true //在此重新打開。

}

},1000)

}添加canClick in數據。默認值為true。如果canClick為真,則可以執行倒計時中的代碼,但如果為假,則不能執行。每次執行canClick時將其設置為false,然後僅在倒計時結束時將其更改為true。所以剛才的問題就沒有了。

實際上,這裏差不多就夠了,但妳也可以調整風格:

& ltbutton class =“button“:class =“{ disabled:!this . can click }“@ click =“count down“& gt;

...

。已禁用{

背景色:# ddd

邊框顏色:# ddd

顏色:# 57a3f3

光標:不允許;//鼠標變化

}效果:

這個倒計時按鈕很簡單,但是我剛寫的時候還是很亂的,當時還不知道函數節流的概念。

相信看完這個案例,妳已經掌握了方法。更多精彩請關註Gxl上的其他相關文章!

推薦閱讀:

如何使用Vue編寫雙向數據綁定

如何使用Vue實現proxy代理