当前位置:首页 > 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中实现防抖(debounce)可以通过以下几种方式完成: 使用Lodash库的debounce方法 安装Lodash: npm install lodash…

React如何使用防抖

React如何使用防抖

防抖的基本概念 防抖(Debounce)是一种限制函数执行频率的技术,确保函数在连续触发时只执行一次。在React中,常用于输入框搜索、窗口大小调整等高频事件场景。 使用Lodash实现防抖 Lod…

react函数组件如何更新

react函数组件如何更新

React 函数组件更新方法 使用 useState Hook 通过 useState Hook 可以定义组件的状态,并触发重新渲染。useState 返回一个状态值和一个更新状态的函数。调用更新函数…

react组建中如何调用函数

react组建中如何调用函数

在 React 组件中调用函数的方法 React 组件中调用函数的方式取决于函数的定义位置和作用域。以下是常见的几种方法: 在组件内部定义并调用函数 函数可以直接在组件内部定义,并通过事件或生命周期…

react如何让函数组件缓存

react如何让函数组件缓存

缓存函数组件的常用方法 在React中,函数组件本身是无状态的,但可以通过以下方式实现类似类组件的缓存或优化效果: 使用React.memo进行浅比较缓存 React.memo是一个高阶组件,它会记…

react实现防抖

react实现防抖

防抖的概念 防抖(Debounce)是一种优化高频触发事件的技术,确保事件在停止触发后的一段时间内只执行一次。适用于输入框搜索、窗口调整等场景。 实现方法一:使用 lodash 库 安装 l…