import { customRef } from 'vue' /** * 创建防抖的响应式引用 * @param value - 初始值 * @param delay - 防抖延迟时间(毫秒),默认 200ms * @returns 防抖的响应式引用 */ export function useDebouncedRef(value: T, delay: number = 300) { let timeout: ReturnType | null = null return customRef((track, trigger) => { return { get() { track() return value }, set(newValue: T) { if (timeout) { clearTimeout(timeout) } timeout = setTimeout(() => { value = newValue trigger() }, delay) } } }) }