美文网首页
vue 写一个通用的防抖添加指令

vue 写一个通用的防抖添加指令

作者: 冷暖自知_zjz | 来源:发表于2023-07-17 17:26 被阅读0次

通过扩展Vue.prototype来实现,在全局范围内给所有点击事件添加防抖。具体步骤如下:

  1. 在入口文件(例如main.js)中导入lodash库的debounce方法:
import { debounce } from 'lodash';

  1. 在入口文件中将debounce方法添加到Vue的原型中:
Vue.prototype.$debounce = debounce;

  1. 创建一个全局指令来处理所有点击事件,并在其中应用防抖逻辑。可以在入口文件中或者单独的文件中注册全局指令。示例代码如下:
import Vue from '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);
  },
});

在上述代码中,我们创建了一个名为debounce-click的全局指令。在bind阶段,我们获取传递给指令的回调函数、延迟时间并应用防抖逻辑。在unbind阶段,我们移除事件监听器。

  1. 在项目中使用全局指令,给所有点击事件添加防抖逻辑:
<template>
  <div>
    <button v-debounce-click="handleClick">Click me</button>
  </div>
</template>

<script>
export default {
  methods: {
    handleClick() {
      console.log('Click event debounce');
    },
  },
};
</script>

在上面的示例中,我们使用全局指令v-debounce-click来添加防抖逻辑。handleClick方法将在点击事件发生时进行防抖处理。

通过以上步骤,我们就成功地给项目的所有点击事件添加了防抖功能。

相关文章

  • vue指令防抖

    创建一个debounce文件夹,一个index.js一个debounce.js 组件中使用

  • vue防抖节流指令

    参考:https://juejin.im/post/5e328dd85188254e1b0c6e5b 在src下新...

  • Vue自定义指令--拖拽,防抖 节流

    拖拽指令 防抖 节流

  • 项目常用代码

    节流 } 防抖 } 页面滚动(requestAnimationFrame) vue全局点击防抖

  • vue3常用指令

    防抖 输入框防抖 防抖这种情况设置一个v-throttle自定义指令来实现 图片懒加载 设置一个v-lazy自定义...

  • vue自定义指令防抖

    v-debounce 背景:在开发中,有些提交保存按钮有时候会在短时间内被点击多次,这样就会多次重复请求后端接口,...

  • Angular防抖指令

    第一次在掘金上记笔记,使用Angular小半年了。深感Angular中文资料稀少,故记录一些文章供自己翻阅,同时希...

  • Vue自定义指令

    Vue指令 Vue的指令以v-开头,作用在HTML元素上,将指令绑定在元素上,给绑定的元素添加一些特殊行为。 例如...

  • Vue 防抖

    原理: 当持续触发某事件时,在一定时间间隔内执行回调函数,如果在这个时间间隔内重复执行此事件,重新开始计时。 使用...

  • 防抖 vue

    防抖: 触发高频事件后n秒内只执行一次,如果n秒内再次触发就会重新计算时间。 按钮 ................

网友评论

      本文标题:vue 写一个通用的防抖添加指令

      本文链接:https://www.haomeiwen.com/subject/mopgudtx.html