/
sdds
/
plasma
Обзор
Документация
Войти
/
sdds
/
plasma
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
dev
packages/plasma-core/src/hooks/useDebouncedFunction.ts
32 строки
995 B
Neretin Artem
fix(plasma-*): Fix some types by es-lint rules
21 мар 2023, 17:02
21 мар 2023, 17:02
a0648a3
Код
Авторство
О чём код?
import React from 'react'; /** * @param {Function} func * @param {number} delay * @param {boolean} cleanUp * https://habr.com/ru/company/domclick/blog/510616/ */ export function useDebouncedFunction(func: (...args: any) => any, delay: number, cleanUp?: boolean) { const timeoutRef = React.useRef<number>(); /** * Очистка таймера */ function clearTimer() { if (timeoutRef.current) { clearTimeout(timeoutRef.current); timeoutRef.current = undefined; } } /** * Очищаем таймер при анмаунте компонента, если cleanUp выставлен в true * и тем самым отменяем последний запланированный вызов */ React.useEffect(() => (cleanUp ? clearTimer : undefined), [cleanUp]); return (...args: any[]) => { clearTimer(); timeoutRef.current = setTimeout(() => func(...args), delay); }; }