当前位置:首页 > VUE

vue实现防抖节流

2026-01-07 03:31:15VUE

Vue 中实现防抖(Debounce)

防抖的核心是延迟执行函数,在连续触发时取消前一次的调用,只执行最后一次。适用于输入框搜索、窗口大小调整等场景。

方法1:使用 Lodash 的 _.debounce 安装 Lodash 并导入 debounce 方法:

npm install lodash

在 Vue 组件中使用:

vue实现防抖节流

import { debounce } from 'lodash';

export default {
  methods: {
    handleInput: debounce(function(event) {
      console.log('防抖处理:', event.target.value);
    }, 500)
  }
}

方法2:手动实现防抖 通过 setTimeout 和 clearTimeout 实现:

export default {
  data() {
    return {
      timeout: null
    };
  },
  methods: {
    handleInput(event) {
      clearTimeout(this.timeout);
      this.timeout = setTimeout(() => {
        console.log('防抖处理:', event.target.value);
      }, 500);
    }
  }
}

Vue 中实现节流(Throttle)

节流的核心是限制函数执行频率,在指定时间内只执行一次。适用于滚动事件、频繁点击按钮等场景。

vue实现防抖节流

方法1:使用 Lodash 的 _.throttle

import { throttle } from 'lodash';

export default {
  methods: {
    handleScroll: throttle(function() {
      console.log('节流处理滚动事件');
    }, 1000)
  }
}

方法2:手动实现节流 通过时间戳判断是否执行:

export default {
  data() {
    return {
      lastExecTime: 0
    };
  },
  methods: {
    handleClick() {
      const now = Date.now();
      if (now - this.lastExecTime >= 1000) {
        console.log('节流处理点击');
        this.lastExecTime = now;
      }
    }
  }
}

在模板中的直接使用

通过指令或事件绑定直接调用防抖/节流方法:

<template>
  <input @input="handleInput" />
  <button @click="handleClick">提交</button>
</template>

注意事项

  • 组件销毁时清除定时器:避免内存泄漏,在 beforeDestroy 生命周期中清除未执行的定时器。
  • Vue 3 的 Composition API:可以通过 refonUnmounted 实现更简洁的逻辑。
  • 性能权衡:防抖的延迟时间和节流的间隔需根据实际场景调整。

标签: 防抖vue
分享给朋友:

相关文章

vue实现发送值接受值

vue实现发送值接受值

Vue 实现父子组件传值 父组件向子组件传值(props) 父组件通过 v-bind 或简写 : 向子组件传递数据。子组件通过 props 接收数据。 父组件代码: <template&g…

vue实现功能

vue实现功能

Vue 功能实现方法 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。以下是实现常见功能的几种方法: 数据绑定与响应式更新 在 Vue 中,数据绑定通过 v-model…

vue实现mouseout

vue实现mouseout

Vue 实现 mouseout 事件的方法 在 Vue 中实现 mouseout 事件可以通过多种方式完成,以下是几种常见的方法: 使用 v-on 指令 Vue 提供了 v-on 指令(或简写为 @…

甘特图vue实现

甘特图vue实现

甘特图 Vue 实现方法 使用开源库 vue-ganttastic 安装依赖: npm install vue-ganttastic 基础实现代码: <template> <…

vue 实现modal

vue 实现modal

Vue 实现 Modal 的方法 使用 Vue 原生组件 通过 Vue 的组件系统可以轻松实现 Modal。创建一个可复用的 Modal 组件,通过 props 控制显示与隐藏。 <templ…

vue 实现跳转

vue 实现跳转

Vue 实现页面跳转的方法 在 Vue 中实现页面跳转通常可以通过以下几种方式实现,具体选择取决于项目需求和技术栈(如是否使用 Vue Router)。 使用 Vue Router 进行编程式导航…