首页 > 其他分享 >vue3中自定义ref实现防抖

vue3中自定义ref实现防抖

时间:2023-12-10 16:40:00浏览次数:21  
标签:防抖 自定义 timer delay value ref

import { customRef } from "vue";

/**
 * @description 自定义ref实现防抖
 * @param {String} value 
 * @param {Number} delay 
 * @returns 
 */
export const debounceRef  = (value,delay) => {
  let timer;
  return customRef((track,trigger) => ({
    get(){
      // 依赖收集
      track();
      return value
    },
    set(val){
      clearTimeout(timer);
      timer = setTimeout(() => {
        value = val;
        // 派发更新
        trigger()
      },delay)
    }
  }))
}

//使用
<template>
  <input type="text" v-model="value">
  <h3>{{  value }}</h3>
</template>

<script setup>
import { debounceRef } from "../utils/debounce";

const value = debounceRef('',1000)
</script>

标签:防抖,自定义,timer,delay,value,ref
From: https://www.cnblogs.com/crazy-rock/p/17892816.html

相关文章