vue防抖节流

简介: vue防抖节流

防抖(debounce): 是指在一定时间内,在动作被连续频繁触发的情况下,动作只会被执行一次,也就是说当调用动作过n毫秒后,才会执行该动作,若在这n毫秒内又调用此动作则将重新计算执行时间,所以短时间内的连续动作永远只会触发一次。

函数节流(throttle): 是指一定时间内执行的操作只执行一次,也就是说即预先设定一个执行周期,当调用动作的时刻大于等于执行周期则执行该动作,然后进入下一个新周期,一个比较形象的例子是如果将水龙头拧紧直到水是以水滴的形式流出,那你会发现每隔一段时间,就会有一滴水流出。

安装

1. yarn add lodash

2. npm i lodash --save

导入Lodash

<template>
  <button @click="btnClick">节流</button>
  <button @click="btnClick2">防抖</button>
</template>
<script>
import _ from "lodash";
export default {
  name: "",
  setup() {
    // 节流
    const btnClick = _.debounce(function() {
      // ....
      console.log('节流');
    }, 2000);
    // 防抖
    const btnClick2 = _.throttle(function() {
      // ....
      console.log('防抖');
    }, 2000);
    return {
      btnClick,
      btnClick2,
    };
  },
};
</script>
<style scoped></style>

这种方法对于可复用组件有潜在的问题,因为它们都共享相同的防抖函数。为了使组件实例彼此独立,可以在生命周期钩子的 created 里添加该防抖函数:

app.component('save-button', {
  created() {
    // 用 Lodash 的防抖函数
    this.debouncedClick = _.debounce(this.click, 500)
  },
  unmounted() {
    // 移除组件时,取消定时器
    this.debouncedClick.cancel()
  },
  methods: {
    click() {
      // ... 响应点击 ...
    }
  },
  template: `
    <button @click="debouncedClick">
      Save
    </button>
  `
})


相关文章
|
5月前
|
资源调度 JavaScript
vue防抖节流
vue防抖节流
|
2月前
|
JavaScript UED
如何在Vue3项目中使用防抖节流技巧
在Vue 3项目中使用防抖和节流技巧以优化组件性能,包括使用`lodash`库和自定义实现这两种方法。
366 0
如何在Vue3项目中使用防抖节流技巧
|
5月前
|
JavaScript
Vue 编写(preventReClick)防暴点 +防抖(debounce)和节流(throttle)函数
Vue 编写(preventReClick)防暴点 +防抖(debounce)和节流(throttle)函数
350 0
|
5月前
|
JavaScript
vue3以指令的形式使用防抖事件
vue3以指令的形式使用防抖事件
195 2
|
5月前
vue3用指令的防抖事件
vue3用指令的防抖事件
216 0
|
5月前
|
JavaScript
Vue3指令:搜索框输入防抖实现(附源码)
Vue3指令:搜索框输入防抖实现(附源码)
272 0
|
5月前
|
JavaScript 前端开发 安全
如何在 Vue 中使用 防抖 和 节流
如何在 Vue 中使用 防抖 和 节流
|
5月前
|
API
vue3自定义指令(防抖指令)与vue3与vue2指令的对比
vue3自定义指令(防抖指令)与vue3与vue2指令的对比
|
2天前
|
缓存 JavaScript 前端开发
《基础篇第4章:vue2基础》:使用vue脚手架创建项目
《基础篇第4章:vue2基础》:使用vue脚手架创建项目
10 3
|
4天前
|
JavaScript 前端开发 开发者
Vue v-for 进阶指南:in 与 of 的区别及应用场景 | 笔记
Vue.js 中的 v-for 是强大的遍历指令,但其中的 in 和 of 关键字往往被开发者忽视。尽管它们的用法相似,但适用的场景和数据结构却各有不同。本文将详细探讨 v-for 中 in 和 of 的区别、适用场景以及在实际开发中的最佳使用时机。通过理解它们的差异,你将能够编写更加高效、简洁的 Vue.js 代码,灵活应对各种数据结构的遍历需求。
40 6