vue3 loadsh 防抖功能

loadsh 是一个工具库,我们通常使用 loadsh 的 debounce 函数处理防抖


官方API https://www.lodashjs.com/

简单使用方法

<template>
	<input @change="onchange" />
</template>


<script setup lang="ts">
import { debounce } from "lodash";

const onchange  = debounce(hello,500)

function hello(e){
	console.log("hello world")
	console.log(e.target.value)
}
onUnmounted(() => {
    // 移除组件时,取消定时器
    onchange.cancel();
});

</script>

注意几点

  • debounce 的 第一个参数必须是 function 函数,不能传入箭头函数,否则 this 指向会出现问题
  • vue3 + ts 中,不能直接在 @change 里面写防抖函数,必须赋值给一个变量,否则同样会造成 this 指向问题
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VueLoadsh前端开发中非常常用,在前端开发过程中常常遇到需要防抖和节流的情况。下面我们将具体介绍VueLoadsh对事件防抖和节流的实现。 事件防抖是指在短时间内多次触发同一事件,只执行最后一次触发的事件。这种现象常见于浏览器不断地触发resize、scroll、mousemove等多种事件。为了避免短时间内多次执行同一事件而导致的浪费资源和卡顿现象,我们通常会采用事件防抖的方式来避免这种情况的出现。 Vue通过@keyup、@keydown、@input等事件绑定方式可以实现事件防抖。例如: <template> <div> <input type="text" v-model="value" @keyup="debounceHandle"/> <div>{{ value }}</div> </div> </template> <script> import debounce from 'loadash/debounce'; export default { data () { return { value: '' } }, methods: { debounceHandle: debounce(function() { console.log('事件防抖'); }, 500) } } </script> 上述代码中,我们使用loadash/debounce函数,这个函数会返回一个debounced函数。在此处,我们将debounced函数绑定到@keyup事件上,设置延迟时间为500毫秒。这样在输入框输入的时候,每次输入之后都会等待500毫秒后执行该函数,确保不会多次执行该函数。 事件节流是指在一段时间内,多次触发同一事件,但只执行一次函数。相比于事件防抖,事件节流把触发的事件按照一定规律分为多个时间段,在一个时间段内只执行一次函数。 VueLoadsh的throttle函数可以实现事件节流。例如: <template> <div> <input type="text" v-model="value" @keyup="throttleHandle"/> <div>{{ value }}</div> </div> </template> <script> import throttle from 'loadash/throttle'; export default { data () { return { value: '' } }, methods: { throttleHandle: throttle(function() { console.log('事件节流'); }, 500) } } </script> 上述代码中,我们使用loadash/throttle函数,这个函数会返回一个throttled函数。在此处,我们将throttled函数绑定到@keyup事件上,设置间隔时间为500毫秒。这样在输入框输入的时候,在500毫秒时间内只执行一次函数。 综上所述,事件防抖和事件节流是前端开发中非常常用的技术,通过VueLoadsh的配合可以轻松实现事件防抖和事件节流。在实际开发过程中,需要根据具体情况选择使用防抖或节流技术。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值