-
-
Notifications
You must be signed in to change notification settings - Fork 197
Open
Description
<script setup lang='ts'>
/**
* Implement the custom directive
* Make sure the `onClick` method only gets triggered once when clicked many times quickly
* And you also need to support the debounce delay time option. e.g `v-debounce-click:ms`
*
*/
function debounce(fn,delay){
let timer = null
return (...args)=>{
clearTimeout(timer)
timer = setTimeout(()=>{
fn.apply(this, args)
}, delay)
}
}
const VDebounceClick = {
mounted(el,binding){
el.addEventListener("click", debounce(binding.value, binding.arg));
},
}
function onClick() {
console.log("Only triggered once when clicked many times quickly")
}
</script>
<template>
<button v-debounce-click:200="onClick">
Click on it many times quickly
</button>
</template>