Hook useSWR: recupero, caricamento ed errori
Usare useSWR con funzioni fetcher personalizzate e gestire in modo dichiarativo gli stati di caricamento, errore e successo
Hook useSWR: recupero, caricamento ed errori è una lezione React Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento React Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso React Academy include 4 lezioni in totale.
La firma di useSWR
useSWR(key, fetcher, options) è l'hook principale. key è la chiave della cache (in genere una stringa URL), fetcher è la funzione asincrona che restituisce i dati e options è un oggetto di configurazione opzionale.
L'hook restituisce un oggetto con data, error, isLoading, isValidating e la funzione mutate.
Il parametro key
key può essere una stringa URL, un array di [url, params] oppure null. Le chiavi stringa corrispondono a semplici richieste GET. Le chiavi array consentono di includere variabili come userId o filtri nell'identità della cache.
Passare null disabilita completamente la richiesta, una soluzione utile per il recupero condizionale quando i dati necessari non sono ancora disponibili.
La funzione fetcher
fetcher riceve la chiave (oppure gli elementi della chiave array come argomenti separati) e deve restituire una Promise. Il valore risolto diventa data. Se fetcher genera un'eccezione, viene impostata la proprietà error.
Esempio: (url) => fetch(url).then(r => { if (!r.ok) throw new Error(r.status); return r.json(); }).
Gli stati data ed error
data è undefined durante il primo caricamento e corrisponde al valore restituito da fetcher dopo il completamento. error è undefined a meno che fetcher non abbia generato un'eccezione; in tal caso contiene l'oggetto errore generato.
Verifichi if (error) per visualizzare un messaggio di errore e if (!data) per visualizzare uno skeleton di caricamento, fornendo interfacce di fallback chiare.
isLoading rispetto a isValidating
isLoading è true solo quando non sono presenti dati nella cache e una richiesta è in corso: durante il primo caricamento per quella chiave. isValidating è true ogni volta che è in corso una richiesta, comprese le revalidazioni in background quando esistono già dati nella cache.
Utilizzi isLoading per le schermate skeleton e isValidating per un indicatore di caricamento discreto che segnali un aggiornamento in background.
SWRConfig globale
SWRConfig consente di definire fetcher predefinito, dedupingInterval, refreshInterval, gestore onError e altre opzioni per tutte le chiamate a useSWR all'interno del relativo sottoalbero. In questo modo la configurazione viene centralizzata invece di ripetere le opzioni in ogni hook.
È possibile annidare più provider SWRConfig per avere valori predefiniti diversi nelle varie sezioni dell'app.
Recupero condizionale con chiave null
Passi null come chiave per saltare la richiesta: useSWR(isLoggedIn ? '/api/user' : null, fetcher). SWR non eseguirà il recupero finché la chiave non assumerà un valore diverso da null.
È più pulito rispetto all'opzione skip di React Query. Il passaggio della chiave da null a una stringa attiva automaticamente il primo recupero.
Recupero dipendente
Concateni gli hook SWR per le richieste dipendenti: const { data: user } = useSWR('/api/me', fetcher) quindi const { data: orders } = useSWR(user ? '/api/orders/' + user.id : null, fetcher). Il secondo hook attende il completamento del primo.
Questo modello evita catene di useEffect e mantiene le dipendenze dei dati dichiarative e leggibili.
La deduplicazione delle richieste in azione
Se un componente Header e un componente Sidebar chiamano entrambi useSWR('/api/user', fetcher), SWR esegue una sola richiesta e condivide il risultato. Entrambi i componenti vengono nuovamente renderizzati insieme quando data o error si aggiornano.
Questa deduplicazione avviene automaticamente entro la finestra di dedupingInterval (2000 ms per impostazione predefinita), senza alcuna configurazione aggiuntiva.
Opzioni SWR utili
refreshInterval: 5000 esegue il polling ogni 5 secondi. refreshWhenHidden: false interrompe il polling quando la scheda non è visibile. shouldRetryOnError: false disabilita i nuovi tentativi automatici. revalidateOnFocus: false disabilita la revalidazione attivata quando la finestra torna in primo piano.
Combini le opzioni in base ai requisiti di aggiornamento dei dati: i dashboard utilizzano spesso refreshInterval, mentre per i contenuti statici si imposta revalidateOnFocus: false.
Paginazione con useSWR
Per i dati paginati, includa il numero di pagina nella chiave: useSWR(['/api/items', page], fetcher). Cambiare pagina attiva un nuovo recupero per quella pagina, mantenendo nella cache le pagine precedenti.
SWR fornisce anche useSWRInfinite per i modelli basati su cursore o di scorrimento infinito, con una funzione getKey che costruisce le chiavi in base all'indice della pagina e ai dati della pagina precedente.
Chiave SWR null
Che cosa succede quando si passa null come chiave a useSWR?
Riepilogo della lezione
useSWR(key, fetcher) restituisce data, error, isLoading e isValidating. Le chiavi null disabilitano il recupero per le richieste condizionali e dipendenti. isLoading indica il primo caricamento, mentre isValidating indica qualsiasi richiesta in corso. SWRConfig centralizza i valori predefiniti e la deduplicazione delle richieste tra i componenti è automatica.
Opzioni come refreshInterval, revalidateOnFocus e shouldRetryOnError consentono di definire con precisione il comportamento di aggiornamento dei dati per singolo hook o globalmente.
Domande Frequenti
La lezione «Hook useSWR: recupero, caricamento ed errori» è gratuita?
Sì — il testo completo di «Hook useSWR: recupero, caricamento ed errori» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso React Academy, passa a CoddyKit PRO. Il corso React Academy include 4 lezioni in totale.
Cosa imparerò in «Hook useSWR: recupero, caricamento ed errori»?
Usare useSWR con funzioni fetcher personalizzate e gestire in modo dichiarativo gli stati di caricamento, errore e successo Eserciti React Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare React Academy?
Non è richiesta alcuna esperienza precedente. React Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Hook useSWR: recupero, caricamento ed errori»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione React Academy?
Sì. Ogni lezione React Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Concetti fondamentali di SWR: stale-while-revalidate
- Hook useSWR: recupero, caricamento ed errori
- Mutation e aggiornamenti ottimistici con SWR
- SWR e React Query: scegliere lo strumento adatto