import { useCallback, useRef } from "react"; /** * 通用防抖 Hook * @param callback 需要防抖的函数 * @param delay 防抖延迟时间(毫秒) * @returns 包装后的防抖函数 */ // eslint-disable-next-line @typescript-eslint/no-explicit-any function useDebounce any>( callback: T, delay: number, ): (...args: Parameters) => void { const timerRef = useRef | null>(null); const debouncedFunction = useCallback( (...args: Parameters) => { if (timerRef.current) { clearTimeout(timerRef.current); } timerRef.current = setTimeout(() => { callback(...args); }, delay); }, [callback, delay], ); return debouncedFunction; } export default useDebounce;