处理vue项目中按钮点击多次点击的问题(防抖)
解决思路:
1.自定义全局指令
1 Vue.directive('debounce', { 2 inserted(el, binding) { 3 el.addEventListener('click', () => { 4 if (!el.disabled) { 5 el.disabled = true 6 setTimeout(() => { 7 el.disabled = false 8 }, binding.value || 2000) 9 } 10 }) 11 } 12 });
使用:
1 <el-button type="primary" @click="handleSave" v-debounce>保存</el-button>
2.自定义局部指令
1 directives: { 2 preventReClick: { 3 // 指令的定义 4 inserted(el, binding) { 5 el.addEventListener('click', () => { 6 if (!el.disabled) { 7 el.disabled = true 8 setTimeout(() => { 9 el.disabled = false 10 }, binding.value || 2000) 11 } 12 }) 13 } 14 } 15 }
使用:
1 <el-button type="primary" @click="handleSave" v-debounce>保存</el-button>
3.动态控制按钮的disabled属性
这个就比较简单了,自己控制就行。
参考链接:https://www.cnblogs.com/ping-an/p/15830170.html