关于VUE中按钮重复点击,重复请求的处理

Posted Mark

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于VUE中按钮重复点击,重复请求的处理相关的知识,希望对你有一定的参考价值。

处理按钮重复点击请求的方法有一些,之前常用点击后记录状态然后锁定按钮的方式

  • 第一步,点击按钮,设置一个lock为true,绑定到按钮的disabled
  • 执行请求后不管成功还是失败都重置为false,释放开按钮的再次点击
<el-button :disabled="requestLock">确定</el-button>

js

func() {
    this.requestLock = true
    sendMessage(query).then((response) => {
        this.delayedRequest()
    }).catch(error => {
        this.delayedRequest()
    })
}

delayedRequest() {
   setTimeout(() => {
       this.requestLock = !this.requestLock
   }, 500)
},

这就基本做到防重复点击请求

虽然这种方法可以做到,但是我们不可能去每个页面都增加这种方法,太多重复、代码,所以想到了用指令的方式,做好指令全局引入,所有的地方都可以快乐的使用了

在directive项目里面增加一个JS文件

import Vue from \'vue\'

const preventDbClick = Vue.directive(\'preventDbClick\', {
  inserted: function (el, binding) {
    el.addEventListener(\'click\', () => {
      if (!el.disabled) {
        el.disabled = true
        setTimeout(() => {
          el.disabled = false
        }, 1000)
      }
    })
  }
});
 
export {
  preventDbClick 
}

在main.js里面引入指令

import \'./directive/preventDbClick.js\'

页面中的按钮就可以使用了~

<el-button v-preventDbClick>确定</el-button>

以上是关于关于VUE中按钮重复点击,重复请求的处理的主要内容,如果未能解决你的问题,请参考以下文章

vue router拦截器防止重复点击

解决Vue项目按钮重复(高频)提交问题!

uniapp 防止重复点击

jquery ajax 放在重复点击事件beforeSend方法

Vue路由切换&Axios接口取消重复请求

Vue js如何防止按钮连续点击两次[重复]