useDebounce Hook de Debounce
Última atualização: 2026-11-03
useDebounce Hook de Debounce
useDebounce recebe um valor que muda rapidamente, como o texto de uma caixa de busca, e retorna uma versão estável dele apenas após N milissegundos: se o valor mudar de novo nesse meio-tempo, o temporizador recomeça. Usá-lo para dirigir suas requisições elimina uma grande quantidade de trabalho sem propósito, o que o torna um item básico para busca, autocompletar e tratamento de redimensionamento. O valor que ele retorna fica deliberadamente atrás, e esse atraso é exatamente o que filtra as teclas intermediárias.
| Grupo | Padrões de Componentes |
|---|---|
| Tipo | Hook |
| Desde | React 16.8 |
ℹ️ Informação O editor transpila JSX para JavaScript e renderiza a UI real na sandbox; os componentes são montados automaticamente — sem render manual.
📝 Sintaxe
function useDebounce(value, delay = 300) {
const [debounced, setDebounced] = useState(value)
useEffect(() => {
const t = setTimeout(() => setDebounced(value), delay)
return () => clearTimeout(t) // the value changed again: drop the old timer
}, [value, delay])
return debounced
}
⚙️ Parâmetros
| value | O valor bruto a ser debounced, geralmente o estado de uma entrada controlada. |
|---|---|
| delay | O atraso do debounce em milissegundos, 300 por padrão. O novo valor só é retornado depois que o valor ficou quieto por esse tempo. |
Retorna:Retorna o valor atrasado e estável: ele permanece inalterado enquanto o valor bruto continua mudando e só alcança o novo valor após uma pausa.
▶ Exemplo
O exemplo roda direto: renderiza automaticamente ao expandir e edições valem na hora.
Saída:
Enquanto você digita rápido, a linha "Debounced" fica parada e só alcança o valor final meio segundo depois que você para — uma requisição dirigida por ela dispara uma vez, com o valor final.