1.自定义指令去抖
html
<button @click="sayHello" ref="target" v-throttle>提交</button>
js
Vue.directive('throttle', {
bind: function (el, binding) {
let throttleTime = binding.value // 节流时间
if (!throttleTime) { // 用户若不设置节流时间,则默认2s
throttleTime = 2000
}
let cbFun
el.addEventListener('click', () => {
el.isDisableClick = true
if (!cbFun) {
cbFun = setTimeout(() => {
el.isDisableClick = false
cbFun = null
}, throttleTime)
}
}, true)
}
})