forked from
slices.network/slices
Highly ambitious ATProtocol AppView service and sdks
1import { useEffect, useState } from "react";
2
3/**
4 * Debounces a value by delaying updates until after the specified delay
5 * @param value The value to debounce
6 * @param delay Delay in milliseconds (default: 300ms)
7 * @returns The debounced value
8 */
9export function useDebounce<T>(value: T, delay: number = 300): T {
10 const [debouncedValue, setDebouncedValue] = useState<T>(value);
11
12 useEffect(() => {
13 const timeoutId = setTimeout(() => {
14 setDebouncedValue(value);
15 }, delay);
16
17 return () => clearTimeout(timeoutId);
18 }, [value, delay]);
19
20 return debouncedValue;
21}