当前位置:首页 > VUE

vue实现防抖节流

2026-01-07 03:31:15VUE

Vue 中实现防抖(Debounce)

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

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

npm install lodash

在 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)

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

方法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双向实现

Vue 双向数据绑定的实现原理 Vue 的双向数据绑定主要通过 v-model 指令实现,其核心是结合了数据劫持(Object.defineProperty 或 Proxy)和发布-订阅模式。 数据…

vue点击实现排序

vue点击实现排序

实现点击排序的方法 在Vue中实现点击排序功能,可以通过以下几种方式完成: 使用计算属性结合排序方法 定义一个响应式数据存储排序状态,通过计算属性动态返回排序后的数组。点击事件切换排序状态。…

vue实现文字播放栏

vue实现文字播放栏

Vue 实现文字播放栏(跑马灯效果) 方法一:使用 CSS 动画 + Vue 数据绑定 通过 CSS 的 @keyframes 实现动画效果,结合 Vue 的动态数据绑定控制内容。 <tem…

vue 移动端实现签名

vue 移动端实现签名

Vue 移动端签名实现方法 在移动端实现签名功能,可以通过HTML5的Canvas结合触摸事件完成。以下是具体实现步骤: 使用Canvas绘制签名 安装vue-signature-pad插件或直接使…

vue实现微博印象

vue实现微博印象

实现微博印象功能的核心思路 微博印象功能通常指用户发布微博后,系统自动分析文本内容并提取关键词或标签,以可视化形式展示。Vue实现该功能需要结合文本分析、关键词提取和前端渲染技术。 文本分析与关键…

vue中如何实现循环

vue中如何实现循环

在 Vue 中实现循环 Vue 提供了 v-for 指令用于实现循环渲染列表数据。v-for 可以遍历数组、对象或数字范围,生成动态的 DOM 元素。 遍历数组 使用 v-for 遍历数组时,语法…