在项目中,鼠标快速点击按钮,导致向后台多次请求,为了防止这种情况,就要对相应的按钮进行防暴力重复点击处理,v-preventReClick指令能有效的解决这一点
一、在utils文件夹下创建一个preventRepeatClick.js
代码如下:
export default {
install(Vue) {
Vue.directive('preventReClick', {
inserted(el, binding) {
el.addEventListener('click', () => {
if (!el.disabled) {
el.disabled = true
setTimeout(() => {
el.disabled = false
}, binding.value || 1000) // 默认1秒内禁止提交
}
})
}
})
}
}
二、在main.js 中调用
import preventReClick from '@/utils/preventRepeatClick.js'
Vue.use(preventReClick)
三、使用
<!-- 在按钮上加入v-preventReClick可以达到防止重复提交的目的,默认为1秒内禁止提交,也可以自定义时间 -->
<el-button v-preventReClick>按钮</el-button>
<!-- 或者 例如设置3秒如下 -->
<el-button v-preventReClick="3000">按钮</el-button>