当前位置: 首页 > news >正文

vue3按钮点击频率控制

现有一个按钮,如下图

在这里插入图片描述
点击时

在这里插入图片描述
再次点击

在这里插入图片描述
刷新窗口再次点击

在这里插入图片描述
刷新窗口依然可以实现点击频率控制。

代码实现:

<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-ignoreimport zhCn from 'element-plus/dist/locale/zh-cn.mjs'import { reactive } from 'vue'import { ElMessage } from 'element-plus'// 国际化配置const locale = reactive(zhCn)const handleClick = () => {// 间隔为30sconst delay = 30000const 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) / 1000ElMessage({showClose: true,message: `点击过于频繁,请${Math.floor(diff)}秒后尝试!`,type: 'warning',})return}// 执行按钮功能(处理业务逻辑)handleAlert()}// 封装可以设置过期时间的localStorageconst setExpiredItem = (key, value, expires) => {const data = {value: value,expires: Date.now() + expires}window.localStorage.setItem(key, JSON.stringify(data))}// 封装获取有过期时间的localStorage(我们规定如果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>
http://www.lryc.cn/news/272147.html

相关文章:

  • (一)Matlab数值计算基础
  • 《MySQL系列-InnoDB引擎02》InnoDB存储引擎介绍
  • 单片机大小端模式
  • Codeforces Good Bye 2023 A~E
  • 【蓝桥杯】比赛大纲整理
  • 探索 CodeWave低代码技术的魅力与应用
  • 《2023我的编程之旅》
  • C++ 二进制图片的读取和blob插入mysql_stmt_init—新年第一课
  • 向爬虫而生---Redis 基石篇2 <拓展Hash>
  • 【论文精读】A Survey on Large Language Model based Autonomous Agents
  • 23款奔驰GLC260L升级原厂540全景影像 高清环绕的视野
  • SQL 在已有表中修改列名的方法
  • QT----Visual stdio翻金币案例,附源码
  • 总结:浏览器解析html与执行JS之生命周期详解
  • aspose通过开始和结束位置关键词截取word另存为新文件
  • 深入解析美颜SDK:绿幕抠图功能的算法原理
  • 从有向带权图判断最短路径里各目标顶点顺序
  • 鼠标驱动框架:模拟键盘按键
  • ES6之Promise的链式调用
  • HTML----JavaScript操作对象BOM对象
  • 隆道数智大会回顾|第13期《如何构建绿色产业供应链新生态》(完)
  • 粒子群优化pso结合bp神经网络优化对csv文件预测matlab(3)
  • 软性演员-评论家算法 SAC
  • Nginx多域名部署多站点
  • Java的常规面试题
  • 大数据技术发展史
  • linux常见基础指令
  • “人家赚那么多”系列01:如何练习?练什么?
  • 【Android】使用android studio查看内置数据库信息
  • PHP开发日志 ━━ 基于PHP和JS的AES相互加密解密方法详解(CryptoJS) 适合CryptoJS4.0和PHP8.0