vue3按鈕點擊頻率控制的實現(xiàn)示例
更新時間:2024年01月03日 15:38:27 作者:laizhenghua
在前端開發(fā)中,當用戶頻繁連續(xù)點擊按鈕,可能會導致頻繁的請求或者觸發(fā)過多的操作,本文主要介紹了vue3按鈕點擊頻率控制的實現(xiàn)示例,感興趣的可以了解一下
現(xiàn)有一個按鈕,如下圖

點擊時

再次點擊

刷新窗口再次點擊

刷新窗口依然可以實現(xiàn)點擊頻率控制。
代碼實現(xiàn):
<template>
<!--<el-config-provider :locale="locale">
<router-view/>
</el-config-provider>-->
<el-button type="primary" @click="handleClick">click</el-button>
</template>
<script setup lang="ts">
// @ts-ignore
import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
import { reactive } from 'vue'
import { ElMessage } from 'element-plus'
// 國際化配置
const locale = reactive(zhCn)
const handleClick = () => {
// 間隔為30s
const delay = 30000
const key = 'ls_handle_click'
let cache = getExpiredItem(key)
if (cache <= 0) {
setExpiredItem(key, Date.now(), delay)
} else {
const now = Date.now()
const diff = delay / 1000 - (now - cache) / 1000
ElMessage({
showClose: true,
message: `點擊過于頻繁,請${Math.floor(diff)}秒后嘗試!`,
type: 'warning',
})
return
}
// 執(zhí)行按鈕功能(處理業(yè)務邏輯)
handleAlert()
}
// 封裝可以設(shè)置過期時間的localStorage
const setExpiredItem = (key, value, expires) => {
const data = {
value: value,
expires: Date.now() + expires
}
window.localStorage.setItem(key, JSON.stringify(data))
}
// 封裝獲取有過期時間的localStorage(我們規(guī)定如果key到期則返回-1,如果沒有這個key就返回0)
const getExpiredItem = (key) => {
const value = window.localStorage.getItem(key)
if (!value) {
return 0
}
const data = JSON.parse(value)
if (Date.now() > data.expires) {
window.localStorage.removeItem(key)
return -1
}
return data.value
}
// 按鈕功能
const handleAlert = () => {
ElMessage({
showClose: true,
message: 'this is a success message.',
type: 'success',
})
}
</script>
<style scoped lang="scss">
</style>
到此這篇關(guān)于vue3按鈕點擊頻率控制的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)vue3點擊頻率控制內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue3 + TypeScript 開發(fā)總結(jié)
本文直接上 Vue3 + TypeScript + Element Plus 開發(fā)的內(nèi)容,感興趣的話一起來看看吧2021-08-08

