方案1:
Vue.directive('throttle', {
bind: (el, binding) => {
let throttleTime = binding.value; // 防抖时间
if (!throttleTime) { // 用户若不设置防抖时间,则默认2s
throttleTime = 2000;
}
let cbFun;
el.addEventListener('click', event => {
if (!cbFun) { // 第一次执行
cbFun = setTimeout(() => {
cbFun = null;
}, throttleTime);
} else {
event && event.stopImmediatePropagation();
}
}, true);
},
});
<button @click="sayHello" v-throttle>提交</button>
sayHello() {
console.log('Hello!')
}
`
``
用户多次点击导致的问题
最新推荐文章于 2022-03-10 17:10:39 发布