/
aqa
/
claude-code
Обзор
Документация
Войти
/
aqa
/
claude-code
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
hooks/useMinDisplayTime.ts
35 строк
1010 B
kuberwastaken
new initial commit (history rewritten)
01 апр 2026, 14:57
01 апр 2026, 14:57
c1996f2
Код
Авторство
О чём код?
import { useEffect, useRef, useState } from 'react' /** * Throttles a value so each distinct value stays visible for at least `minMs`. * Prevents fast-cycling progress text from flickering past before it's readable. * * Unlike debounce (wait for quiet) or throttle (limit rate), this guarantees * each value gets its minimum screen time before being replaced. */ export function useMinDisplayTime<T>(value: T, minMs: number): T { const [displayed, setDisplayed] = useState(value) const lastShownAtRef = useRef(0) useEffect(() => { const elapsed = Date.now() - lastShownAtRef.current if (elapsed >= minMs) { lastShownAtRef.current = Date.now() setDisplayed(value) return } const timer = setTimeout( (shownAtRef, setFn, v) => { shownAtRef.current = Date.now() setFn(v) }, minMs - elapsed, lastShownAtRef, setDisplayed, value, ) return () => clearTimeout(timer) }, [value, minMs]) return displayed }