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>
  `
})


相关文章
|
6月前
|
资源调度 JavaScript
vue防抖节流
vue防抖节流
|
3月前
|
JavaScript UED
如何在Vue3项目中使用防抖节流技巧
在Vue 3项目中使用防抖和节流技巧以优化组件性能,包括使用`lodash`库和自定义实现这两种方法。
502 0
如何在Vue3项目中使用防抖节流技巧
|
6月前
|
JavaScript
Vue 编写(preventReClick)防暴点 +防抖(debounce)和节流(throttle)函数
Vue 编写(preventReClick)防暴点 +防抖(debounce)和节流(throttle)函数
421 0
|
6月前
|
JavaScript
vue3以指令的形式使用防抖事件
vue3以指令的形式使用防抖事件
217 2
|
6月前
vue3用指令的防抖事件
vue3用指令的防抖事件
240 0
|
6月前
|
JavaScript
Vue3指令:搜索框输入防抖实现(附源码)
Vue3指令:搜索框输入防抖实现(附源码)
297 0
|
6月前
|
JavaScript 前端开发 安全
如何在 Vue 中使用 防抖 和 节流
如何在 Vue 中使用 防抖 和 节流
100 0
|
6月前
|
API
vue3自定义指令(防抖指令)与vue3与vue2指令的对比
vue3自定义指令(防抖指令)与vue3与vue2指令的对比
|
5天前
|
JavaScript 前端开发
如何在 Vue 项目中配置 Tree Shaking?
通过以上针对 Webpack 或 Rollup 的配置方法,就可以在 Vue 项目中有效地启用 Tree Shaking,从而优化项目的打包体积,提高项目的性能和加载速度。在实际配置过程中,需要根据项目的具体情况和需求,对配置进行适当的调整和优化。
|
5天前
|
存储 缓存 JavaScript
在 Vue 中使用 computed 和 watch 时,性能问题探讨
本文探讨了在 Vue.js 中使用 computed 计算属性和 watch 监听器时可能遇到的性能问题,并提供了优化建议,帮助开发者提高应用性能。