Vue 为所有的click事件添加debounce

感谢各位抽出时间看我的问题
是否有一种方式,能为vue中所有的click事件添加防抖呢

为什么要给click事件添加防抖呢

现在项目比较臃肿,app上几乎所有的click事件都要做防抖处理,所以想看看有没有办法统一加上

这样的情况目前还没有遇见过

image

这个应该可以你试一下

1 Like
// 亲测有效
const on = Vue.prototype.$on
Vue.prototype.$on = function(event, func) {
  let previous = -1
  let newFunc = func
  if (event === 'click') {
    newFunc = function() {
      const now = new Date().getTime()
      if (previous + 500 <= now) {
        func.apply(this, arguments)
        previous = now
      }
    }
  }
  on.call(this, event, newFunc)
}

根据你的写的,防抖的,你上面写的那个是节流的
const on = Vue.prototype.$on
Vue.prototype.$on = function (event, func) {
let timer
let newFunc = func
if (event === ‘click’) {
newFunc = function () {
clearTimeout(timer)
timer = setTimeout(function () {
func.apply(this, arguments)
}, 500)
}
}
on.call(this, event, newFunc)
}

嗯 写错了 :rofl::rofl::rofl:

我是根据你写的改的,还是借鉴了你的这个想法。