按钮防抖

简介: 按钮防抖
  1. 自定义指令

     // 在directive.js文件
     import Vue from 'vue'
     /*
       按钮防抖动指令
     */
     Vue.directive('debounce', {
       inserted(el, binding) {
         el.addEventListener('click', () => {
           if (!el.disabled) {
             el.disabled = true
             setTimeout(() => {
               el.disabled = false
             }, binding.value || 3 * 1000)
           }
         })
       }
     })
    
     // main.js中引入
     import '@/utils/directive.js'
    
     // 页面中使用
     <el-button v-debounce>防抖</el-button>
    
  2. 按钮单独使用loading或者disabled实现

🌟 方案分析:

  1. 自定义指令相对来讲,代码改动量稍小,但是防抖时间不精准,有可能接口还没响应按钮就可以再次点击了。如:防抖时间为1秒,但是请求花掉了2秒才返回数据给前端进行处理,中间产生了时间差,导致用户有时间重复点击。
  2. 单独按钮实现,代码改动量稍大,防重复提交时间更精准
目录
相关文章
|
7月前
基于Vue2用keydown、setTimeout事件实现连续按键(连击)任意键(或组合键)3秒触发自定义事件(以F1键为例)
基于Vue2用keydown、setTimeout事件实现连续按键(连击)任意键(或组合键)3秒触发自定义事件(以F1键为例)
秒杀按钮引发的防抖节流思考
当点击秒杀按钮的时候,使用防抖,如果一直点击,接口是否能发出去??还是最后一次点击时会
151 0
|
JavaScript 前端开发
vue 中使用防抖和节流,防止重复点击或重复上拉加载
vue 中使用防抖和节流,防止重复点击或重复上拉加载
|
7月前
基于Vue2用keydown、keyup事件实现长按键盘任意键(或组合键)3秒触发自定义事件(以F1键为例)
基于Vue2用keydown、keyup事件实现长按键盘任意键(或组合键)3秒触发自定义事件(以F1键为例)
|
4月前
|
JavaScript
基于Vue2+ElementUI/Vue3+ElementPlus对el-notification增加倒计时进度条特效,鼠标移入,暂停计时,鼠标移出,继续计时
本文介绍了如何在Vue2+ElementUI和Vue3+ElementPlus项目中对`el-notification`组件增加倒计时进度条特效,并实现鼠标移入通知时暂停计时,鼠标移出时继续计时的功能。
130 0
|
4月前
|
图形学
小功能⭐️Unity Button按钮实现鼠标移入移出触发相应事件
小功能⭐️Unity Button按钮实现鼠标移入移出触发相应事件
|
5月前
|
JavaScript 前端开发
vue动画——旋转动画(悬浮触发、点击触发)
vue动画——旋转动画(悬浮触发、点击触发)
249 1
|
5月前
|
JavaScript
vue动画——翻转动画(悬浮触发、点击触发)
vue动画——翻转动画(悬浮触发、点击触发)
90 0
|
7月前
|
UED
如何理解鼠标点击事件在程序中的处理
如何理解鼠标点击事件在程序中的处理
101 0
|
7月前
失焦事件和点击事件
失焦事件和点击事件
46 1