eduardweb.
Hooks & PatternsÎncepător#react#hooks#debounce

useDebounce corect — varianta pe care o copiez de 3 ani

De Florin Manea, 20 apr. 2026 · 422 vizualizări · 3 like-uri

Postat acum 1 zi
typescript
import { useEffect, useState } from 'react';

export function useDebounce<T>(value: T, delay = 300): T {
  const [debounced, setDebounced] = useState(value);

  useEffect(() => {
    const id = setTimeout(() => setDebounced(value), delay);
    return () => clearTimeout(id);
  }, [value, delay]);

  return debounced;
}

Fiecare proiect începe cu un useDebounce. Iată varianta mea care nu s-a rupt niciodată.

Caracteristici

  • TypeScript proper
  • Curățenie cu clearTimeout
  • Valori stabile (fără re-render inutil)
  • Testat pe search, auto-save, validare async

Folosire tipică:

  • Pui const debounced = useDebounce(searchText, 300)
  • Fetch-ul depinde de debounced, nu de searchText
  • Gata, nu mai spam-uiești API-ul la fiecare keystroke

Răspunsuri 0

Se încarcă răspunsurile…

Loghează-te pentru a răspunde

Doar membrii comunității pot lăsa comentarii.