useDebounce
Hook que atualiza um valor após um delay em milissegundos. Ideal para inputs de busca, filtros e qualquer state que dispara requisições.
Visão Geral
O useDebounce retorna uma versão atrasada do valor passado — só atualiza após o delay em milissegundos sem mudanças. Cada nova mudança reinicia o timer.
Exemplo de Uso
index.tsx
import { useDebounce } from "@convertcompany/ui/hooks";
import { useEffect, useState } from "react";
export default function SearchBox() {
const [query, setQuery] = useState("");
const debouncedQuery = useDebounce(query, 300);
useEffect(() => {
if (!debouncedQuery) return;
fetch(`/api/search?q=${debouncedQuery}`).then(/* ... */);
}, [debouncedQuery]);
return (
<input
value={query}
onChange={(e) => setQuery(e.target.value)}
placeholder="Buscar…"
/>
);
}
O query atualiza imediatamente (responsivo no input), mas o debouncedQuery só muda depois de 300ms parado. O useEffect que dispara a request só roda quando o debounced muda — evita avalanche de requisições.
Assinatura
index.ts
function useDebounce<T>(value: T, delay: number): T;
Props
| Propriedade | Tipo |
|---|---|
| valueValor a ser atrasado. Genérico — pode ser qualquer tipo. | T |
| delayDelay em milissegundos antes de atualizar o valor retornado. | number |