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

Vue3中防止按钮重复点击的方式

本文列两种方式,推荐第一种,经过长时间测试第二种防止的还是会漏,这里也列一下

①使用定时器(推荐)

判断3秒钟之内方法只能执行一次

<el-button @click="handleClick" type="primary" :loading="formLoading">确 定</el-button>
// 定义按钮禁用变量,这里禁用了如果点的快还是能点两次,所以下面再定义一个定时器
const formLoading = ref(false)// 定时器防止重复执行
const handleClick = () => {if (!isCooldown.value) {// 设置为冷却状态isCooldown.value = true; // 执行业务逻辑submitForm(); // 设置定时器,3秒后解除冷却状态setTimeout(() => {isCooldown.value = false;}, 3000);} else {message.warning('点太快啦')}
};// 业务逻辑函数,提交、保存、修改等等
const submitForm = async () => {formLoading.value = true// ......各种自己的业务逻辑formLoading.value = false
}

②Vue3自定义指令

很多帖子都写的这种方式,我试着会漏,并且偶尔会导致其他按钮不可用,还是第一种方式简单粗暴可靠

main.ts

  const app = createApp(App)// 注册自定义指令 v-prevent-reclickapp.directive('prevent-reclick', {beforeMount(el, binding) {el.disabled = false; // 初始化时启用按钮el.addEventListener('click', () => {el.disabled = true; // 点击后禁用按钮setTimeout(() => {el.disabled = false; // 在指定的时间后重新启用按钮}, binding.value || 2000); // 使用 binding.value 来设置等待时间,默认为 2000 毫秒});},unmounted(el) {// 组件卸载时移除事件监听器el.removeEventListener('click');},});

.vue文件

<el-button @click="handleClick" type="primary" v-prevent-reclick="2000">确 定</el-button>
http://www.lryc.cn/news/460520.html

相关文章:

  • windows主机重新安装zabbix agent提示please clear the previous agent registration
  • 一个将.Geojson文件转成shapefile和kml文件的在线页面工具
  • Mamba学习笔记(1)——原理基础
  • linux应用
  • 【千库网-注册安全分析报告】
  • 【LwIP源码学习3】TCP协议栈分析——数据接收流程
  • 【bug】finalshell向远程主机拖动windows快捷方式导致卡死
  • 基于SpringBoot剧本杀管理系统 【附源码】
  • Linux 命令 —— grep、tail、head、cat、more、less(查看日志常用命令)
  • 知识见闻 - 美国连线杂志
  • 多线程的状态及切换流程
  • [Python学习日记-47] Python 中的系统调用模块—— os 与 sys
  • Linux系统——lvm逻辑卷
  • 一键快捷回复软件助力客服高效沟通
  • 初识Linux之指令(二)
  • 在深度学习中,Epoch、迭代次数、批次大小(Batch Size)和学习速率(Learning Rate)是影响模型训练效果的重要超参数。
  • 研究学习的循环递进三段论
  • Linux下如何将代码提交至Gitee
  • 【MATLAB源码-第181期】基于matlab的32QAM调制解调系统频偏估计及补偿算法仿真,对比补偿前后的星座图误码率。
  • 24年856电子线路专业课考场回忆
  • el-table表格里面有一条横线
  • QT通过QLocalSocket和QSharedMemory实现进程间通信
  • Python中的数据可视化艺术:用Matplotlib和Seaborn讲故事
  • python机器学习(手写数字识别)
  • 如何针对项目中的技术难点准备面试?——黑马点评为例
  • ARP欺骗的多种手法
  • HCIA——one
  • 【vue】⾃定义指令+插槽+商品列表案例
  • 多线程——线程的等待通知
  • 模态与非模态的对话框