0Pricing
React Academy · Lezione

Suspense per i confini di dati e codice

Combini Suspense con il lazy loading e le future librerie per i dati, ottenendo stati di caricamento chiari.

Suspense per i confini di dati e codice è una lezione React Academy gratuita su CoddyKit. Questa è la lezione 4 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.

Benvenuto

In questa lezione userà React Suspense con React.lazy per suddividere il codice e con le librerie per i dati, così da mostrare un'interfaccia di fallback durante il caricamento dei contenuti.

Che cos'è Suspense

Suspense è un componente React che intercetta i componenti nel proprio sottoalbero che sono 'sospesi', cioè in attesa del caricamento di qualcosa, e al loro posto esegue il rendering di un'interfaccia di fallback.
<Suspense fallback={<Spinner />}>
  <MyComponent />
</Suspense>

Suspense con React.lazy

React.lazy() crea un componente caricato da un import dinamico. Se usato all'interno di Suspense, il fallback viene visualizzato finché il bundle JavaScript non è stato scaricato.
const HeavyChart = React.lazy(() => import('./HeavyChart'));

<Suspense fallback={<p>Loading chart...</p>}>
  <HeavyChart />
</Suspense>

Più componenti lazy sotto un unico boundary

Più componenti lazy sotto lo stesso boundary di Suspense condividono un unico fallback. React attende che siano stati caricati TUTTI prima di mostrare il contenuto. Utilizzi boundary annidati per gestire caricamenti indipendenti.

Boundary di Suspense annidati

Annidi i boundary di Suspense per mostrare le varie parti dell'interfaccia man mano che vengono caricate, invece di attendere tutto. I boundary esterni intercettano i caricamenti più lenti, mentre quelli interni gestiscono i caricamenti rapidi.
<Suspense fallback={<PageSkeleton />}>
  <Header />
  <Suspense fallback={<ChartSkeleton />}>
    <LazyChart />
  </Suspense>
</Suspense>

Suspense con le librerie per i dati

Librerie come React Query (con `suspense: true`) e Relay sospendono i componenti in attesa dei dati, proprio come avviene con il caricamento lazy. Il boundary di Suspense fornisce il fallback di caricamento.
const { data } = useQuery({ queryKey: ['users'], queryFn: fetchUsers,
  suspense: true }); // component suspends until data is ready
// No loading check needed — data is always available here

L'hook use() in React 19

In React 19, l'hook `use(promise)` consente di leggere direttamente una promise in un componente. Se la promise è in attesa, il componente viene sospeso e il boundary di Suspense più vicino mostra il proprio fallback.
import { use } from 'react';

function Profile({ userPromise }) {
  const user = use(userPromise); // suspends until resolved
  return <p>{user.name}</p>;
}

SuspenseList per rivelazioni ordinate

React.SuspenseList (sperimentale) coordina più boundary di Suspense affinché vengano mostrati in un ordine specifico, dall'alto verso il basso, tutti insieme e così via, evitando che l'interfaccia compaia in modo caotico.

Suspense non intercetta gli errori

Suspense gestisce solo gli stati di caricamento. Non intercetta gli errori causati da fetch non riusciti. Combini Suspense con un Error Boundary per gestire sia gli stati di caricamento sia quelli di errore.
<ErrorBoundary fallback={<Error />}>
  <Suspense fallback={<Spinner />}>
    <DataComponent />
  </Suspense>
</ErrorBoundary>

Skeleton screen come fallback

Invece degli spinner, utilizzi skeleton screen come fallback di Suspense. Le skeleton screen sono layout segnaposto che riproducono la forma del contenuto, riducendo il layout shift quando il contenuto viene visualizzato.

Verifica rapida

Che cosa viene mostrato agli utenti mentre viene scaricato il bundle di un componente React.lazy()?

Riepilogo

Suspense racchiude i componenti in caricamento e mostra un fallback. Utilizzi React.lazy per suddividere il codice, le modalità suspense delle librerie per i dati per gestire il caricamento dei dati e annidi i boundary per rivelazioni progressive indipendenti. Lo abbini a un Error Boundary per una gestione completa degli errori.

Corso completato

Congratulazioni! Ha completato **Pattern asincroni in React: Promise e concorrenza**. Ora sa gestire le race condition, usare useTransition e useDeferredValue per interfacce reattive e sfruttare Suspense per definire i confini di caricamento.

Domande Frequenti

La lezione «Suspense per i confini di dati e codice» è gratuita?

Sì — il testo completo di «Suspense per i confini di dati e codice» è 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 «Suspense per i confini di dati e codice»?

Combini Suspense con il lazy loading e le future librerie per i dati, ottenendo stati di caricamento chiari. 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 4 di 4.

Quanto tempo richiede la lezione «Suspense per i confini di dati e codice»?

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

  1. Race condition e pulizia degli effect
  2. useTransition per aggiornamenti UI non bloccanti
  3. useDeferredValue per il debounce degli input
  4. Suspense per i confini di dati e codice
← Torna a React Academy