首页 > 其他分享 >Vue防抖debounce

Vue防抖debounce

时间:2023-11-09 20:45:23浏览次数:30  
标签:防抖 Vue debounce debounceValue value timer 更新 nv

在搜索框中随着输入内容而更新显示内容或者需要请求接口等逻辑时,如果每一个字符变化都去更新则会浪费一些没有必要的请求,想要的结果是某一个时间内不要去更新,就是常用的防抖测略

Vue中防抖逻辑:在响应式的变量在包装一个响应式,新的响应式只有在一定时间到时才更新,具体如下

export function useDebounce<T>(value: Ref<T>, delay: number) {
  const debounceValue = ref(value.value)
  let timer: number | null = null
  const unwatch = watch(value, (nv) => {
    if (timer) {
      clearTimeout(timer)
    }
    timer = setTimeout(() => {
      debounceValue.value = nv as UnwrapRef<T>
    }, delay)
  })

  onUnmounted(() => {
    unwatch()
  })
  return debounceValue
}

 试用也很简单:

1秒内不更新相应
const debounceValue = useDebounce(searchValue, 1000)
watch(debounceValue, (nv) => {
  if (!nv) {
    searchResult.value = []
    return
  }
  onSearch(nv as string)//具体更新的逻辑
})

 

标签:防抖,Vue,debounce,debounceValue,value,timer,更新,nv
From: https://www.cnblogs.com/duzhaoquan/p/17822762.html

相关文章

  • vue 使用elementui el-image 图片地址不变,图片不刷新问题
    问题:el-image图片地址不变,图片不刷新问题原因:在Web开发中,浏览器会缓存已经加载的静态资源(比如图片、CSS、JS文件),以提高页面加载速度,减轻服务器负担。当图片的源路径不变时,浏览器会对这些图片进行缓存,如果图片内容更新了,但是浏览器还是使用缓存,这时候就需要在图片源路径后......
  • Vite4+Typescript+Vue3+Pinia 从零搭建(2) - tsconfig配置
    tsconfig配置项目代码同步至码云weiz-vue3-template关于tsconfig的配置字段可查看其他文档,如typeScripttsconfig配置详解tsconfig.json文件修改如下:{"compilerOptions":{"target":"ESNext",//将代码编译为最新版本的JS"useDefineForClassFields":tr......
  • Vite4+Typescript+Vue3+Pinia 从零搭建(1) - 项目初始化
    项目初始化项目代码同步至码云weiz-vue3-template前提准备1.node版本Node.js版本>=12,如果有老项目需要旧版本的,推荐用nvm管理node版本。PSC:\Users\Administrator>nvm--version1.1.11PSC:\Users\Administrator>nvmlist*16.20.2(Currentlyusing64-bit......
  • 11 9 学习vue3
    今天创建了vue项目,了解了vue项目的目录如下: vue的组件分为组合式api和选项式api ①创建了组件内容如下:<scriptsetup>import{articleGetAllService,articleSearchService}from'@/api/article.js'//定义响应式数据import{ref}from'vue';constarticleList=re......
  • 记录--vue3 setup 中国省市区三级联动options最简洁写法,无需任何库
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助在写页面的时候,发现表单里面有一个省市区的options组件要写,因为表单很多地方都会用到这个地址选择,我便以为很简单嘛。虽然很简单的一个功能,但是网络上能搜索到的教程大多都是需要配合elementUI等各种UI库的......
  • vue3中生命周期函数
    前言:Vue.js由于其丰富的API和灵活易用等特性,能够帮助我们快速构建单页应用程序,,是目前最受欢迎的javascript框架之一。再过去几年里,我们一直停留在Vue2.x的学习和实践,而当下Vue3.0是Vue.js的最新版本,很多大厂已经开始转型Vue3.0。所以,我们必须紧跟时代步伐,熟练掌握并深刻理解Vue......
  • vue2 switch 将文字显示在按钮内部
    el-elementplus已经实现了该功能了,其实主要就是改样式。效果图样式修改<el-switchv-model="value"active-color="#13ce66"active-text="在读"inactive-text="毕业"inactive-color="#ff4949"></el-switch>.el-switch_......
  • vue+elementui解决下拉框赋值显示id的问题
    当我给下拉框赋值初始化的时候,下拉框却显示id,不显示我的文字  原因是这个id值为数字,正常应该是字符串,所以,应该转成字符串  然后就可以正常显示了......
  • vue3中使用qrcode生成二维码
    安装npminstall--saveqrcode.vueoryarnaddqrcode.vue组件中使用<scriptsetuplang="ts">import{useUiSetStore}from'@store/modules/uiSettings'//导入二维码组件importQrcodeVuefrom'qrcode.vue'constui=useUiSetStore()......
  • vue 适配不同分辨率显示问题
     新建js文件rem.js classDevicePixelRatio{constructor(){//this.flag=false;}//获取系统类型_getSystem(){//letflag=false;varagent=navigator.userAgent.toLowerCase();// varisMac=/macintosh|macosx/i.test(n......