vue2自定义防抖 节流指令

函数定义

//添加自定义防抖指令
export function addDebounceDirective(Vue) {
    Vue.directive('debounce-click', {
      bind(el, binding) {
        const { value, arg } = binding;
        const callback = typeof value === 'function' ? value : value.handler;
        const delay = arg ? parseInt(arg) : 300;
    
        const debouncedCallback = Vue.prototype.$debounce(callback, delay);
    
        el.addEventListener('click', debouncedCallback);
      },
      unbind(el, binding) {
        const { value } = binding;
        const callback = typeof value === 'function' ? value : value.handler;
    
        el.removeEventListener('click', callback);
      },
    });
}

//添加自定义节流指令
export function addThrottleDirective(Vue) {
  Vue.directive('throttle-click', {
    bind(el, binding) {
      const { value, arg } = binding;
      const callback = typeof value === 'function' ? value : value.handler;
      const delay = arg ? parseInt(arg) : 300;
  
      const debouncedCallback = Vue.prototype.$throttle(callback, delay);
  
      el.addEventListener('click', debouncedCallback);
    },
    unbind(el, binding) {
      const { value } = binding;
      const callback = typeof value === 'function' ? value : value.handler;
  
      el.removeEventListener('click', callback);
    },
  });
}

引入

//自定义防抖节流指令
import { debounce,throttle } from 'lodash';
Vue.prototype.$debounce = debounce;
Vue.prototype.$throttle = throttle;
import {addDebounceDirective,addThrottleDirective} from '@xt/utils/util'
addDebounceDirective(Vue)
addThrottleDirective(Vue)

使用

 <el-button class="normal-btn" type="primary" v-debounce-click="search">搜索</el-button>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值