0Pricing
React Academy · Leçon

Suspense pour les frontières de données et de code

Combinez Suspense avec le chargement différé et les futures bibliothèques de données pour obtenir des états de chargement clairs.

Suspense pour les frontières de données et de code est une leçon React Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage React Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours React Academy comprend 4 leçons au total.

Bienvenue

Dans cette leçon, vous utiliserez React Suspense avec React.lazy pour découper le code et avec des bibliothèques de données afin d'afficher une interface de remplacement pendant le chargement du contenu.

Qu'est-ce que Suspense ?

Suspense est un composant React qui intercepte les composants de son sous-arbre lorsqu'ils sont « suspendus », c'est-à-dire qu'ils attendent le chargement d'un élément, et affiche à la place une interface de remplacement.
<Suspense fallback={<Spinner />}>
  <MyComponent />
</Suspense>

Suspense avec React.lazy

React.lazy() crée un composant chargé depuis une importation dynamique. Lorsqu'il est utilisé dans Suspense, l'interface de remplacement s'affiche jusqu'au téléchargement du paquet JavaScript.
const HeavyChart = React.lazy(() => import('./HeavyChart'));

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

Plusieurs composants différés sous une même limite

Plusieurs composants différés placés sous la même limite Suspense partagent une seule interface de remplacement. React attend que ALL soient chargés avant d'afficher le contenu. Utilisez des limites imbriquées pour des chargements indépendants.

Limites Suspense imbriquées

Imbriquez les limites Suspense pour afficher les différentes parties de l'interface au fur et à mesure de leur chargement au lieu d'attendre que tout soit prêt. Les limites externes intercepte les chargements plus lents ; les limites internes gèrent les chargements rapides.
<Suspense fallback={<PageSkeleton />}>
  <Header />
  <Suspense fallback={<ChartSkeleton />}>
    <LazyChart />
  </Suspense>
</Suspense>

Suspense avec les bibliothèques de données

Les bibliothèques comme React Query (avec suspense: true) et Relay suspendent les composants qui attendent des données, tout comme le chargement différé. La limite Suspense fournit l'interface de remplacement pendant le chargement.
const { data } = useQuery({ queryKey: ['users'], queryFn: fetchUsers,
  suspense: true }); // component suspends until data is ready
// No loading check needed — data is always available here

Le hook use() dans React 19

Dans React 19, le hook `use(promise)` vous permet de lire directement une promesse dans un composant. Si la promesse est en attente, le composant se suspend et la limite Suspense la plus proche affiche son interface de remplacement.
import { use } from 'react';

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

SuspenseList pour des affichages ordonnés

React.SuspenseList (expérimental) coordonne plusieurs limites Suspense afin qu'elles apparaissent dans un ordre précis, de haut en bas, toutes à la fois, etc., ce qui évite que l'interface apparaisse de manière désordonnée.

Suspense n'intercepte pas les erreurs

Suspense gère uniquement les états de chargement. Il n'intercepte pas les erreurs provenant de récupérations ayant échoué. Combinez Suspense avec une limite d'erreurs pour gérer à la fois les états de chargement et d'erreur.
<ErrorBoundary fallback={<Error />}>
  <Suspense fallback={<Spinner />}>
    <DataComponent />
  </Suspense>
</ErrorBoundary>

Écrans squelette comme interfaces de remplacement

Au lieu d'indicateurs tournants, utilisez des écrans squelette comme interfaces de remplacement de Suspense. Les écrans squelette sont des mises en page provisoires qui reproduisent la forme du contenu et réduisent les décalages de mise en page lorsque le contenu arrive.

Vérification rapide

Que voit l'utilisateur pendant le téléchargement du paquet d'un composant React.lazy() ?

Récapitulatif

Suspense enveloppe les composants en chargement et affiche une interface de remplacement. Utilisez React.lazy pour découper le code, les modes Suspense des bibliothèques de données pour le chargement des données, et imbriquez les limites pour des affichages progressifs indépendants. Associez-le à une limite d'erreurs pour gérer complètement les erreurs.

Cours terminé

Félicitations ! Vous avez terminé **Modèles asynchrones dans React : promesses et concurrence**. Vous savez maintenant gérer les conditions de concurrence, utiliser useTransition et useDeferredValue pour créer des interfaces réactives, et tirer parti de Suspense pour définir des limites de chargement.

Questions Fréquemment Posées

La leçon « Suspense pour les frontières de données et de code » est-elle gratuite ?

Oui — le texte complet de « Suspense pour les frontières de données et de code » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours React Academy, passe à CoddyKit PRO. Le cours React Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Suspense pour les frontières de données et de code » ?

Combinez Suspense avec le chargement différé et les futures bibliothèques de données pour obtenir des états de chargement clairs. Tu pratiques React Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer React Academy ?

Aucune expérience préalable n'est requise. React Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Suspense pour les frontières de données et de code » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon React Academy ?

Oui. Chaque leçon React Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Conditions de concurrence et nettoyage des effets
  2. useTransition pour des mises à jour d’interface non bloquantes
  3. useDeferredValue pour temporiser les saisies
  4. Suspense pour les frontières de données et de code
← Retour à React Academy