当前位置:首页 > VUE

vue实现防抖节流

2026-01-12 03:17:05VUE

Vue 中实现防抖与节流

防抖(Debounce)和节流(Throttle)是前端开发中常用的性能优化技术,用于控制事件触发的频率。以下是它们在 Vue 中的实现方法。

防抖(Debounce)

防抖的核心是延迟执行,直到事件停止触发后一段时间才执行。

方法一:使用 Lodash 库

安装 Lodash:

vue实现防抖节流

npm install lodash

在 Vue 组件中使用:

import { debounce } from 'lodash';

export default {
  methods: {
    handleInput: debounce(function() {
      // 处理逻辑
    }, 500),
  },
};

方法二:手动实现防抖

vue实现防抖节流

export default {
  data() {
    return {
      timeout: null,
    };
  },
  methods: {
    handleInput() {
      clearTimeout(this.timeout);
      this.timeout = setTimeout(() => {
        // 处理逻辑
      }, 500);
    },
  },
};

节流(Throttle)

节流的核心是固定时间间隔内只执行一次。

方法一:使用 Lodash 库

import { throttle } from 'lodash';

export default {
  methods: {
    handleScroll: throttle(function() {
      // 处理逻辑
    }, 500),
  },
};

方法二:手动实现节流

export default {
  data() {
    return {
      lastExecTime: 0,
    };
  },
  methods: {
    handleScroll() {
      const now = Date.now();
      if (now - this.lastExecTime >= 500) {
        // 处理逻辑
        this.lastExecTime = now;
      }
    },
  },
};

在模板中使用

<template>
  <input @input="handleInput" />
  <div @scroll="handleScroll">滚动内容</div>
</template>

注意事项

  • 防抖适合用于输入框搜索等场景,确保用户停止输入后才触发。
  • 节流适合用于滚动事件或频繁触发的 UI 事件,避免过多计算。
  • 使用 Lodash 可以简化代码,但手动实现更灵活。

以上方法可以根据实际需求选择,结合 Vue 的生命周期和事件绑定灵活应用。

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

相关文章

用vue实现搜索查询

用vue实现搜索查询

实现搜索查询的基本思路 在Vue中实现搜索查询功能通常涉及以下几个核心部分:数据绑定、事件监听、过滤逻辑和UI反馈。以下是一个完整的实现方案。 数据绑定与输入框 创建一个Vue组件,包含一个输入框…

vue设计与实现目录

vue设计与实现目录

以下是《Vue设计与实现》一书的典型目录结构(根据常见技术书籍及Vue核心内容整理): 响应式系统 响应式数据的基本原理 依赖收集与触发更新 实现简易响应式系统 Proxy与Refle…

vue实现生成二维码

vue实现生成二维码

使用qrcode.vue库生成二维码 安装qrcode.vue库: npm install qrcode.vue --save 在Vue组件中使用: <template> &l…

vue实现toggle

vue实现toggle

Vue 实现 Toggle 功能 在 Vue 中实现 toggle(切换)功能可以通过多种方式完成,以下是几种常见的方法: 使用 v-model 和 v-on 通过 v-model 绑定数据,结合…

vue 实现筛选

vue 实现筛选

实现筛选功能的基本方法 在Vue中实现筛选功能通常涉及以下几个核心步骤: 数据绑定与筛选逻辑 使用v-model绑定筛选条件到Vue实例的数据属性,结合计算属性实现动态筛选: data() {…

vue实现曲线

vue实现曲线

Vue 实现曲线的方法 在 Vue 中实现曲线可以通过多种方式,包括使用 SVG、Canvas 或第三方库如 D3.js、ECharts 等。以下是几种常见的方法: 使用 SVG 绘制曲线 SVG…