按钮防抖

简介: 按钮防抖
  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. 单独按钮实现,代码改动量稍大,防重复提交时间更精准
目录
相关文章
|
6月前
|
JavaScript
弹出窗(原生js)
弹出窗(原生js)
36 0
|
6月前
基于Vue2用keydown、setTimeout事件实现连续按键(连击)任意键(或组合键)3秒触发自定义事件(以F1键为例)
基于Vue2用keydown、setTimeout事件实现连续按键(连击)任意键(或组合键)3秒触发自定义事件(以F1键为例)
秒杀按钮引发的防抖节流思考
当点击秒杀按钮的时候,使用防抖,如果一直点击,接口是否能发出去??还是最后一次点击时会
140 0
|
JavaScript 前端开发
vue 中使用防抖和节流,防止重复点击或重复上拉加载
vue 中使用防抖和节流,防止重复点击或重复上拉加载
|
4月前
|
JavaScript 前端开发
vue动画——旋转动画(悬浮触发、点击触发)
vue动画——旋转动画(悬浮触发、点击触发)
220 1
|
4月前
|
JavaScript
vue动画——翻转动画(悬浮触发、点击触发)
vue动画——翻转动画(悬浮触发、点击触发)
76 0
|
6月前
|
存储 前端开发 JavaScript
点击按钮时触发防抖
点击按钮时触发防抖
80 0
|
JavaScript 前端开发
js函数防抖
js函数防抖
37 0
|
JavaScript 前端开发
jquery通过setInterval实现按钮的轮播点击效果
jquery通过setInterval实现按钮的轮播点击效果
71 0
jquery通过setInterval实现按钮的轮播点击效果
|
JavaScript
【js中鼠标点击、移动和光标移动的事件触发】
【js中鼠标点击、移动和光标移动的事件触发】
207 0