import { useEffect, useState } from "react"; /** * Возвращает значение, обновляемое с задержкой `delayMs` после последнего * изменения `value`. Используется чтобы не дёргать API на каждый keystroke / * каждый тик слайдера. Таймер — не HTTP, поэтому useEffect здесь уместен. */ export function useDebouncedValue(value: T, delayMs = 350): T { const [debounced, setDebounced] = useState(value); useEffect(() => { const t = setTimeout(() => setDebounced(value), delayMs); return () => clearTimeout(t); }, [value, delayMs]); return debounced; }