当前位置: 首页 > article >正文

vue中使用lodash的debounce(防抖函数)

1、安装

npm i --save lodash.debounce

2、引入

import debounce from 'lodash.debounce'

3、使用

<van-search v-model="searchValue" placeholder="输入姓名或工号" @input='handleInput' />

第一种:

handleInput: debounce(function (val) {
  console.log(val)
}, 200)

第二种:

handleInput(val) {
	console.log(val)
}
created() {
	this.handleInput = debounce(this.handleInput, 200) // 搜索框防抖
}

这两种使用方式效果一样

观察者防抖:

<template>
  <input v-model="value" type="text" />
  <p>{{ value }}</p>
</template>
<script>
import debounce from "lodash.debounce";
export default {
  data() {
    return {
      value: "",
    };
  },
  watch: {
    value(...args) {
      this.debouncedWatch(...args);
    },
  },
  created() {
    this.debouncedWatch = debounce((newValue, oldValue) => {
      console.log('New value:', newValue);
    }, 500);
  },
  beforeUnmount() {
    this.debouncedWatch.cancel();
  },
};
</script>

事件处理器防抖:

<template>
  <input v-on:input="debouncedHandler" type="text" />
</template>
<script>
import debounce from "lodash.debounce";
export default {
  created() {
    this.debouncedHandler = debounce(event => {
      console.log('New value:', event.target.value);
    }, 500);
  },
  beforeUnmount() {
    this.debouncedHandler.cancel();
  }
};
</script>

为什么不在method中写好方法,在template中直接调用,就像这样

<template>
  <input v-on:input="debouncedHandler" type="text" />
</template>
<script>
import debounce from "lodash.debounce";
export default {
  methods: {
    // Don't do this!
    debouncedHandler: debounce(function(event) {
      console.log('New value:', event.target.value);
    }, 500)
  }
};
</script>

组件使用 export default { … } 导出的 options 对象,包括方法,会被组件实例重用。

如果网页中有 2 个以上的组件实例,那么所有的组件都会应用 相同 的防抖函数 methods.debouncedHandler — 这会导致防抖出现故障。


http://www.kler.cn/a/543919.html

相关文章:

  • FlinkCDC 实现 MySQL 数据变更实时同步
  • 【LeetCode】689、三个无重叠子数组的最大和
  • 开源堡垒机 JumpServer 社区版实战教程:一步步构建企业安全运维环境
  • 探索技术新边界:让 HTML 电子凭证与二维码、PDF 完美融合
  • 学习笔记十九:K8S生成pod过程
  • 【2024最新Java面试宝典】—— SpringBoot面试题(44道含答案)_java spingboot 面试题
  • 如何安装和运行Zonos:详细步骤指南
  • ES6具体有什么
  • 爬虫瑞数5.5案例:某钢材交易官网(面向对象补环境)
  • Docker 部署 MySQL-5.7 单机版
  • 13.13 Flask Web Server 架构设计与生产级实现指南:从 RESTful API 开发到高并发优化
  • 【NXP i.MX6ULL 使用】IMX6Y2C-512M-EMMC 设备树配置文档
  • Windows上在Qt中快速配置OpenCV库(最简单教程)
  • ffmpeg所有版本下载地址
  • PyTorch Lightning LightningDataModule 介绍
  • 【Linux】nmcli命令详解
  • 2025.1.8(qt图形化界面之消息框)
  • Win10环境借助DockerDesktop部署最新MySQL9.2
  • JVM速成=。=
  • 【java】java学习笔记之java 进阶
  • CCF-CSP第34次认证第二题——矩阵重塑(其二)【需反复思考学习!!!】
  • DeepSeek 模型的本地部署指南
  • Ubuntu 上安装和配置 Nexus Repository Manager
  • 相机模数转换
  • AWTK-WEB 快速入门(4) - JS Http 应用程序
  • 关于 IoT DC3 中设备(Device)的理解