使用 vue ref 自定义数据响应以及实现防抖

// 引入vue指定ref的函数
import {
    
     customRef } from "vue";
/**
 * 使用 vue ref 自定义数据响应以及实现防抖
 * @param value 赋值 任意类型
 * @param delay 时间 Date
 * @returns function
 */
export const debounceRef = (value: any, delay = 1000) => {
    
    
    let timer: NodeJS.Timer;
    return customRef((tiack, trigger) => {
    
    
        return {
    
    
            get() {
    
    
                tiack();
                return value;
            },
            set(val) {
    
    
                clearTimeout(timer);
                timer = setTimeout(() =>{
    
    
                    value = val;
                    trigger();
                }, delay);
            }
        }
    });
};

在组件中使用 .vue

<script setup lang="ts">
// 引入自定义的方法
import {
    
     debounceRef } from '@/utils/tools';
// 绑定
const value = debounceRef(null);
</script>
<template>
	<input type="text" v-model="value" @input="input" />
    {
   
   { value }}
</template>

猜你喜欢

转载自blog.csdn.net/weixin_44244230/article/details/128900612