当前位置:首页 > 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 中实现文档功能可以通过多种方式,包括使用富文本编辑器、Markdown 解析或直接渲染 HTML。以下是几种常见的实现方法。 使用富文本编辑器 富文本编辑器如…

vue实现网页切换

vue实现网页切换

Vue 实现网页切换的方法 在 Vue 中实现网页切换通常可以通过以下几种方式完成,具体取决于项目需求和路由管理方式。 使用 Vue Router Vue Router 是 Vue.js 官方提供…

vue实现多个tab

vue实现多个tab

Vue 实现多个 Tab 的方法 使用动态组件切换 在 Vue 中可以通过动态组件 <component :is="currentTab"> 结合 v-for 和 v-bind 实现多个…

vue怎么实现页面返回

vue怎么实现页面返回

Vue 实现页面返回的方法 在 Vue 中实现页面返回功能,可以通过以下几种方式完成,具体取决于项目使用的路由模式和技术栈。 使用 Vue Router 的编程式导航 通过 this.$router…

vue实现适老化样式

vue实现适老化样式

Vue 实现适老化样式的关键方法 全局字体与字号调整 通过 CSS 变量或主题配置统一放大基础字号,建议正文不小于 18px,标题更大。在 App.vue 中设置全局样式: :root { -…

vue单页面实现登录

vue单页面实现登录

实现登录功能的基本流程 在Vue单页面应用中实现登录功能,通常需要以下几个关键步骤: 创建登录表单组件 使用Vue的模板语法创建包含用户名和密码输入框的表单,并绑定数据到组件的data属性。 &l…