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-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
    }
    // 执行按钮功能(处理业务逻辑)
    handleAlert()
  }
  // 封装可以设置过期时间的localStorage
  const 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>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/287133.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java学习苦旅(十六)——List

本篇博客将详细讲解Java中的List。 文章目录 预备知识——初识泛型泛型的引入泛型小结 预备知识——包装类基本数据类型和包装类直接对应关系装包与拆包 ArrayList简介ArrayList使用ArrayList的构造ArrayList常见操作ArrayList遍历 结尾 预备知识——初识泛型 泛型的引入 我…

机器人制作开源方案 | 多地形适应野外探索智能车

1. 作品基本介绍 如今&#xff0c;智能机器人在军事、制造业、交通运输、航天航空、医疗、服务等领域已有广泛的应用&#xff0c;智能车是机器人研究领域的一项重要基础内容&#xff0c;在各种移动机构中&#xff0c;最为常见的是轮式移动方式&#xff0c;当今社会正处于科技高…

[足式机器人]Part2 Dr. CAN学习笔记-自动控制原理Ch1-9PID控制器

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-自动控制原理Ch1-9PID控制器&#xff09; P —— Proportional I —— Integral D —— Derivative 当前误差/过去误差/误差的变化趋势 K p ⋅ e K_{\mathrm{p}}\cdot e Kp​⋅e&#xff1a;比…

C++基本语言:1.5结构、pbulic、private权限修饰符、类简介

C基本语言包含10章节内容&#xff0c;存于C从入门到精通专栏 目录 一、结构回顾 ①结构变量作为参数 ②采用引用 ③用指向结构体的指针做函数参数 问&#xff1a;C/C的结构有何区别&#xff1f; 二、public和private权限修饰符 三、类简介&#xff1a;类也是一种用户自…

EBU7140 Security and Authentication(三)密钥管理;IP 层安全

B3 密钥管理 密钥分类&#xff1a; 按时长&#xff1a; short term&#xff1a;短期密钥&#xff0c;用于一次加密。long term&#xff1a;长期密钥&#xff0c;用于加密或者授权。 按服务类型&#xff1a; Authentication keys&#xff1a;公钥长期&#xff0c;私钥短期…

【InnoDB数据存储结构】第1章节:数据页存储结构

目录结构 之前整篇文章太长&#xff0c;阅读体验不好&#xff0c;将其拆分为几个子篇章。 本篇章讲解 InnoDB 数据页的存储结构。 数据的存储结构 索引是在存储引擎中实现的&#xff0c;MySQL 服务器上的 存储引擎负责对表数据的读取和写入。 但是不同存储引擎对 数据存放格…

Open3D 最小二乘拟合平面——拉格朗日乘子法

目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接Open3D 最小二乘拟合平面——拉格朗日乘子法。爬虫自重。 一、算法原理 设拟合出的平面方程为: a x + b y +

宣传照(私密)勿转发

精美的海报通常都是由UI进行精心设计的&#xff0c;现在有100 件商品需要进行宣传推广&#xff0c;如果每个商品都出一张图显然是不合理的&#xff0c;且商品信息各异。因此需要通过代码的形式生成海报。对此&#xff0c;我也对我宣传一波&#xff0c;企图实现我一夜暴富的伟大…

Nice Water Shader

非常好的水着色器! 标准RP上的新程序泡沫!!(URP即将推出) URP支持!! 有3个版本: -台式机 -移动设备 -桌面拼接 有灯光支持!! 使用 CUSTOM SHADER INSPECTOR(自定义着色器检查器) 个性化事物的能力,如: 镶嵌图案 3种不同颜色,形成渐变深度 色彩位置优势 菲涅耳颜色和…

[讲座] - 闲聊工业设计

1&#xff0c;工业设计相关的学科分类 2&#xff0c;工业设计的职业发展路线 3&#xff0c;工业设计师的成名人物 4&#xff0c;设计了可口可乐的Loewy 可口可乐的瓶子&#xff0c;无论白天晚上还是瓶子被打碎&#xff0c;都能认出这个是可口可乐的瓶子。 草图参照了可可豆&am…

GZ075 云计算应用赛题第4套

2023年全国职业院校技能大赛&#xff08;高职组&#xff09; “云计算应用”赛项赛卷4 某企业根据自身业务需求&#xff0c;实施数字化转型&#xff0c;规划和建设数字化平台&#xff0c;平台聚焦“DevOps开发运维一体化”和“数据驱动产品开发”&#xff0c;拟采用开源OpenSt…

Oracle笔记-查看表已使用空间最大空间

目前以Oracle18c为例&#xff0c;主要是查这个表USER_SEGMENTS。 在 Oracle 18c 数据库中&#xff0c;USER_SEGMENTS 是一个系统表&#xff0c;用于存储当前用户&#xff08;当前会话&#xff09;拥有的所有段的信息。段是 Oracle 中分配存储空间的逻辑单位&#xff0c;用于存…

数据结构和算法-数据结构的基本概念和三要素和数据类型和抽象数据类型

文章目录 总览数据结构的基本概念总览数据早期和现代的计算机处理的数据数据元素-描述一个个体数据对象-一类数据元素什么是数据结构小结 数据结构的三要素总览逻辑结构-集合结构逻辑结构-线性结构逻辑结构-树形结构逻辑结构-图形结构逻辑结构-小结数据的运算物理结构&#xff…

JAVA对象、List、Map和JSON之间的相互转换

JAVA对象、List、Map和JSON之间的相互转换 1.Java中对象和json互转2.Java中list和json互转3.Java中map和json互转 1.Java中对象和json互转 Object obj new Object(); String objJson JSONObject.toJSONString(obj);//java对象转json Object newObj JSONObject.parseObject(…

一类医疗器械需要做EMC和安规吗?

摘要: 在医疗器械领域&#xff0c;EMC&#xff08;电磁兼容性&#xff09;和安规&#xff08;安全规格&#xff09;测试是非常重要的。医疗器械需要符合电磁兼容性标准&#xff0c;以确保其在电磁环境下能够正常运行而不会受到外部电磁干扰的影响&#xff0c;也不会干扰其他设备…

IOS - 手机安装包 ipa 常见几种方式

安装 ipa 包的方法有很多中&#xff0c;可以通过不同的软件安装&#xff0c;本文只列出了常用的几种&#xff0c;做个简单的归纳整理 1、iTunes 安装 数据线连接手机之后&#xff0c;会自动连接iTunes&#xff0c;&#xff08;第一次连接的时候会提示是否信任此电脑&#xff0…

小红书、抖音、视频号下载工具:随心管理个人作品集 | 开源日报 No.134

karanpratapsingh/system-design Stars: 20.6k License: NOASSERTION 这个项目是关于系统设计的。它提供了有关系统设计的课程内容&#xff0c;包括 IP、OSI 模型、TCP 和 UDP 等主题。该项目的核心优势和特点如下&#xff1a; 提供全面而高效的系统架构定义。从基础设施到数…

k8s的声明式资源管理

在k8s当中支持两种声明资源的方式&#xff1a; 1、 yaml格式&#xff1a;主要用于和管理资源对象 2、 json格式&#xff1a;主要用于在API接口之间进行消息传递 声明式管理方法(yaml)文件 1、 适合对资源的修改操作 2、 声明式管理依赖于yaml文件&#xff0c;所有的内容都…

小白入门基础 - tomcat

一&#xff1a;前言 Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器&#xff0c;属于轻量级应用服务器&#xff0c;在中小型系统和并发访问用户不是很多的场合下被普遍使用&#xff0c;是开发和调试JSP 程序的首选。对于一个初学者来说&#xff0c;可以这样认为&#x…

【解决】Unity 设置跨设备分辨率表现

开发平台&#xff1a;Unity 2018版本以上 开发语言&#xff1a;CSharp 编程平台&#xff1a;Visual Studio 2022   问题描述 使用 UnityEngine.dll 中关于设置分辨率的方法时&#xff0c;无法满足应用以设定分辨率进行屏幕显示问题。因而造成画面不同程度的拉伸情况。而这种情…