Vue3使用customRef封装防抖函数的方法详解
什么是customRef?
创建一个自定义的 ref,并对其依赖项跟踪和更新触发进行显式控制。它需要一个工厂函数,该函数接收 track 和 trigger 函数作为参数,并且应该返回一个带有 get 和 set 的对象。
防抖 (多次触发 只执行最后一次)
作用: 高频率触发的事件,在指定的单位时间内,只响应最后一次,如果在指定的时间内再次触发,则重新计算时间
防抖类似于英雄联盟回城6秒,如果回城中被打断,再次回城需要再等6秒
使用customRef封装防抖函数
import { customRef } from "vue";
//设置默认的时间间隔为1000ms
export function debounceRef(value, duration = 1000) {
//闭包缓存计时器
let timer;
return customRef((tarck, trigger) => {
return {
get(){
//收集依赖
tarck();
return value;
},
set(val){
//短时间内连续触发改变这个val的事件,清除计时器,重新开始记时
clearTimeout(timer)
timer=setTimeout(()=>{
//派发更新
trigger()
value=val
},duration)
}
}
})
}可以在页面中使用,对一个输入框v-model输入,然后一个文本标签显示它的值
经过测试,防抖效果成功实现,只有对输入停止500ms后才会进行对set函数的触发

<template>
<div class="container">
<input v-model="text" placeholder="请输入内容" />
<p>{{ text }}</p>
</div>
</template>
<script setup>
import {debounceRef} from './debounce.js'
const text = debounceRef('',500);
</script>到此这篇关于Vue3使用customRef封装防抖函数的方法详解的文章就介绍到这了,更多相关Vue3 customRef封装防抖函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
深入解析el-col-group强大且灵活的Element表格列组件
这篇文章主要为大家介绍了el-col-group强大且灵活的Element表格列组件深入解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-04-04
前端Vue中常用rules校验规则(轮子)如电话身份证邮箱等校验方法例子
当我们在开发应用时经常需要对表单进行校验,以确保用户输入的数据符合预期,这篇文章主要给大家介绍了关于前端Vue中常用rules校验规则(轮子)如电话身份证邮箱等校验方法的相关资料,需要的朋友可以参考下2023-12-12
解决element-ui的el-select选择器的@blur事件失效的坑
这篇文章主要介绍了解决element-ui的el-select选择器的@blur事件失效的坑,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-09-09
vue内置组件component--通过is属性动态渲染组件操作
这篇文章主要介绍了vue内置组件component--通过is属性动态渲染组件操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-07-07


最新评论