当前位置:首页 > VUE

vue防抖函数实现

2026-01-20 20:21:51VUE

防抖函数原理

防抖(Debounce)是一种限制函数频繁调用的技术,在事件被触发后延迟执行,若在延迟时间内再次触发,则重新计时。适用于输入框搜索、窗口大小调整等场景。

Vue 中实现防抖的三种方式

使用 Lodash 的 debounce 方法

安装 Lodash 并导入 debounce 函数:

vue防抖函数实现

npm install lodash

在 Vue 组件中使用:

import { debounce } from 'lodash';

export default {
  methods: {
    handleInput: debounce(function() {
      // 实际业务逻辑
      console.log('Debounced input');
    }, 500)
  }
}

自定义防抖函数

封装一个可复用的防抖函数:

vue防抖函数实现

function debounce(fn, delay) {
  let timer = null;
  return function(...args) {
    if (timer) clearTimeout(timer);
    timer = setTimeout(() => {
      fn.apply(this, args);
    }, delay);
  };
}

export default {
  methods: {
    search: debounce(function(query) {
      // API调用或数据处理
    }, 300)
  }
}

使用 Vue 指令实现防抖

全局注册防抖指令:

Vue.directive('debounce', {
  inserted(el, binding) {
    let timer;
    el.addEventListener('input', () => {
      if (timer) clearTimeout(timer);
      timer = setTimeout(() => {
        binding.value();
      }, binding.arg || 500);
    });
  }
});

// 使用方式
<input v-debounce:300="searchMethod">

注意事项

  • 防抖时间需根据业务场景调整,通常输入类交互建议300-500ms
  • 在组件销毁时应当清除定时器,避免内存泄漏
  • 对于需要立即执行的场景(如第一次触发立即执行),可扩展实现 leading 选项

完整组件示例

export default {
  data() {
    return {
      searchQuery: ''
    };
  },
  methods: {
    // 使用自定义防抖
    debounceSearch: debounce(function() {
      this.actualSearch();
    }, 500),

    actualSearch() {
      // 实际搜索逻辑
      console.log('Searching:', this.searchQuery);
    }
  }
}

模板中使用:

<input v-model="searchQuery" @input="debounceSearch">

标签: 函数防抖
分享给朋友:

相关文章

vue伪函数实现

vue伪函数实现

Vue 伪函数实现方法 在 Vue 中,伪函数(Mock Functions)通常用于测试或模拟某些逻辑行为。以下是几种常见的实现方式: 使用 Jest 的 mock 功能 // 模拟一个 A…

jquery函数

jquery函数

jQuery 函数概述 jQuery 是一个快速、简洁的 JavaScript 库,通过封装原生 JavaScript 功能,简化 DOM 操作、事件处理、动画和 AJAX 等任务。其核心函数 $()…

vue实现防抖

vue实现防抖

Vue 实现防抖的方法 防抖(Debounce)是一种限制函数频繁调用的技术,确保函数在连续触发时只执行一次。以下是几种在 Vue 中实现防抖的方法。 使用 Lodash 的 _.debounce…

vue实现异步函数

vue实现异步函数

Vue 中实现异步函数的几种方法 使用 async/await 在 Vue 方法或生命周期钩子中可以直接使用 async/await 语法处理异步操作。这种方式代码更清晰,易于理解。 methods…

vue防抖实现原理

vue防抖实现原理

Vue防抖实现原理 防抖(Debounce)是一种优化高频触发事件的技术,确保事件在停止触发后一段时间内只执行一次。在Vue中,防抖通常用于输入框搜索、窗口大小调整等场景。 核心原理 防抖函数通过…