Skip to content

React Hooks spiegati

Gli hook React usati ogni giorno, raggruppati per ruolo: tenere lo state, eseguire effect, memoizzare calcoli, condividere il context e uscire dal render. Ogni riga abbina l'hook al suo scopo.

Un hook è una funzione che permette a un componente funzione di accedere alle funzionalità di React: state, lifecycle, context e messa a punto delle prestazioni. Le due regole: chiama gli hook al livello più alto (mai dentro loop o condizioni) e chiamali solo da funzioni React. Il resto è scegliere l'hook giusto per il lavoro.

Tabella di riferimento · 24 voci
24 of 24 rows
State
Contiene un singolo valore che genera un re-render quando cambia.State locale del componente: campi di form, toggle, contatori.
Contiene uno state guidato da un reducer di action, come un piccolo store.State con più campi correlati o transizioni complesse.
Contiene un valore mutabile che NON genera un re-render.Contenitori mutabili, timer e accesso diretto al DOM tramite .current.
Effect
Esegue un side effect dopo il render, con cleanup opzionale.Recuperare dati, subscription e sincronizzarsi con un sistema esterno.
La funzione restituita da un effect viene eseguita prima dell'effect successivo e di nuovo all'unmount.Smontare subscription e timer, o interrompere una fetch in corso.
Come useEffect, ma scatta in modo sincrono dopo la mutazione del DOM.Leggere o scrivere il layout prima che il browser disegni (toast, tooltip).
Gli event handler girano in risposta a un'azione dell'utente; gli effect girano dopo il render per sincronizzare.La logica causata dall'utente sta in un handler, quella causata dal render in un effect.
In sviluppo monta i componenti due volte, così gli effect girano, si puliscono e girano di nuovo.Scoprire subscription doppie e cleanup mancanti prima della produzione.
Prestazioni
Mette in cache un valore calcolato finché le sue dipendenze non cambiano.Evitare ricalcoli costosi tra i render; cambia di proposito un valore nelle deps per invalidare la cache.
Mette in cache il riferimento a una funzione finché le sue dipendenze non cambiano.Callback stabili passati a figli memoizzati o usati come deps.
Salta il re-render di un componente le cui props sono invariate.Componenti figlio pesanti; passa una funzione di confronto come secondo argomento quando la shallow equality non basta (un HOC, non un hook).
Context e handle esterni
Legge il valore di un context senza prop drilling.Tema, locale o utente autenticato condivisi nell'albero.
Personalizza l'istanza che il parent vede tramite un ref.Esporre un'API ristretta da un figlio tramite forwardRef.
Concorrenza e altro
Marca un aggiornamento di state come non urgente, così la UI resta reattiva.Tenere l'input scattante mentre una lista pesante si ri-renderizza.
Ritarda un valore così gli aggiornamenti possono essere interrotti.Debounce di render costosi senza timer.
Genera un id univoco e stabile per gli attributi di accessibilità.Collegare label e input tra render server e client.
Legge una promise o un context durante il render; l'unico hook che puoi chiamare in modo condizionale.Scartare una promise con Suspense, o leggere un context dentro un early return.
Contiene uno state guidato da una form action, con flag pending incluso.Submit di form che restituiscono errori o state aggiornato da mostrare inline.
Renderizza subito un valore ottimistico, poi torna allo state reale quando l'action si conclude.Mostrare un like o un messaggio inviato mentre la richiesta al server è in volo.
Legge lo stato pending del <form> circostante, senza props.Un pulsante di submit che si disabilita mentre il suo form genitore invia.
Si sottoscrive a uno store esterno a React e legge uno snapshot coerente.API del browser come lo stato online, o store di state di terze parti.
Gira prima dei layout effect, pensato per iniettare regole CSS-in-JS.Librerie di stile che devono inserire regole prima che il layout venga letto.
Mostra un'etichetta personalizzata per lo state interno di un hook in React DevTools.Etichettare ciò che contiene un custom hook durante il debug.
Un tuo hook che compone quelli built-in per condividere logica.Comportamenti stateful riutilizzabili come useFetch o useMediaQuery.