新建文件 preventReClick.js:
import Vue from 'vue'
// 在vue上挂载一个指量 preventReClick
// vue防止按钮重复点击
const preventReClick = Vue.directive('preventReClick', {
inserted: function (el, binding) {
el.addEventListener('click', () => {
if (!el.disabled) {
el.disabled = true
this.$message.warning('操作频繁')
setTimeout(() => {
el.disabled = false
//设置时间
}, binding.value || 3000)
}
})
}
})
export { preventReClick }
在 main.js 中引入该文件组件
import { preventReClick } from './preventReClick'
Vue.use(preventReClick)
在要防止重复点击的按钮上使用该指令 v-prevent-re-click
// 原来的方法如果短时间连续点击了会导致重复创建问题
<el-button @click="submitForm()">创建</el-button>
// 3000 毫秒之内会提示 频繁操作,不会触发提交方法
<el-button v-prevent-re-click @click="submitForm()">创建</el-button>