dressed_for_succes_store/frontend/hooks/useDebounce.ts

27 lines
954 B
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use client";
import { useState, useEffect } from 'react';
/**
* Хук для создания дебаунсинга значения
* @param value Значение, которое нужно дебаунсить
* @param delay Задержка в миллисекундах (по умолчанию 500мс)
* @returns Дебаунсированное значение
*/
export function useDebounce<T>(value: T, delay: number = 500): T {
const [debouncedValue, setDebouncedValue] = useState<T>(value);
useEffect(() => {
// Устанавливаем таймер, который обновит значение через delay мс
const timer = setTimeout(() => {
setDebouncedValue(value);
}, delay);
// Очищаем таймер при изменении value или при размонтировании
return () => {
clearTimeout(timer);
};
}, [value, delay]);
return debouncedValue;
}