Files
flyer-crawler.projectium.com/src/hooks/useDebounce.ts

22 lines
672 B
TypeScript

// src/hooks/useDebounce.ts
import { useState, useEffect } from 'react';
/**
* A custom hook that debounces a value.
* It will only update the returned value after the specified delay has passed
* without the input value changing.
* @param value The value to debounce.
* @param delay The debounce delay in milliseconds.
* @returns The debounced value.
*/
export function useDebounce<T>(value: T, delay: number): T {
const [debouncedValue, setDebouncedValue] = useState<T>(value);
useEffect(() => {
const handler = setTimeout(() => setDebouncedValue(value), delay);
return () => clearTimeout(handler);
}, [value, delay]);
return debouncedValue;
}