0Pricing
React Academy · Leçon

Le hook use() pour les ressources asynchrones

Lisez les promesses et le contexte pendant le rendu avec le hook use() de React 19.

Le hook use() pour les ressources asynchrones est une leçon React Academy gratuite sur CoddyKit. Ceci est la leçon 2 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 la fonction use() de React 19 pour lire directement des promesses et des valeurs de contexte dans la fonction render, ce qui simplifie l'accès asynchrone aux données.

Qu'est-ce que use() ?

use() est une fonction de React 19 qui lit une ressource — une promesse ou un contexte — de manière synchrone dans la fonction render. Si la promesse est en attente, le composant se suspend et la frontière Suspense la plus proche affiche son contenu de repli.
import { use } from 'react';

function UserProfile({ userPromise }) {
  const user = use(userPromise); // suspends if pending
  return <h1>{user.name}</h1>;
}

Transmettre des promesses comme propriétés

Un modèle courant dans React 19 consiste à créer une promesse dans un composant serveur (par exemple, une requête de base de données), à la transmettre à un composant client, puis à la lire avec use(). La frontière Suspense peut se trouver n'importe où au-dessus.
// Server Component
export default function Page() {
  const userPromise = fetchUser(1); // NOT awaited
  return (
    <Suspense fallback={<Spinner />}>
      <Profile userPromise={userPromise} />
    </Suspense>
  );
}

// Client Component
'use client';
export function Profile({ userPromise }) {
  const user = use(userPromise);
  return <p>{user.name}</p>;
}

use() ou useEffect pour les données

Utiliser useEffect pour récupérer des données nécessite de gérer manuellement l'état du chargement et des erreurs. use() avec Suspense supprime toute cette structure répétitive : le corps du composant lit simplement les données comme si elles étaient synchrones.

use() pour le contexte

use() peut également lire des valeurs de contexte, tout comme useContext. La différence est que use() peut être appelée conditionnellement (dans des conditions ou des boucles), contrairement à useContext, qui doit respecter les règles des fonctions React.
import { use } from 'react';
import { ThemeContext } from './ThemeContext';

function Button({ danger }) {
  if (danger) {
    const theme = use(ThemeContext); // conditional — allowed with use()!
    return <button style={{ color: theme.red }}>Delete</button>;
  }
  return <button>Click</button>;
}

Gérer les erreurs avec ErrorBoundary

Si la promesse transmise à use() est rejetée, React lève l'erreur. Entourez le composant d'un ErrorBoundary pour l'intercepter et afficher un contenu de repli.
<ErrorBoundary fallback={<Error />}>
  <Suspense fallback={<Loading />}>
    <Profile userPromise={fetchUser(id)} />
  </Suspense>
</ErrorBoundary>

use() uniquement dans les composants client

use() avec une promesse fonctionne dans les composants client. Dans les composants serveur, utilisez directement async/await : il n'est pas nécessaire d'utiliser use() avec des promesses sur le serveur.

Mettre les promesses en cache

Si un composant est de nouveau rendu, il doit recevoir la même référence de promesse pour éviter une nouvelle récupération. Créez les promesses en dehors du composant ou à un emplacement stable (serveur, cache ou état), puis transmettez-les comme propriétés.

Diffusion en continu avec use()

La combinaison de use() et du SSR en diffusion continue permet à React de diffuser le HTML de la page, d'afficher le contenu de repli Suspense, puis de diffuser le contenu résolu lorsque la promesse est résolue, le tout sur une seule connexion HTTP.

React.cache() pour dédupliquer

Sur le serveur, React.cache() (ou unstable_cache de Next.js) déduplique plusieurs appels à la même fonction asynchrone au cours d’un même rendu. La base de données n’est donc interrogée qu’une seule fois, même si plusieurs composants utilisent la même promesse.

Vérification rapide

Que fait un composant client lorsque use(promise) est appelé alors que la promesse est toujours en attente ?

Récapitulatif

use(promise) lit les données asynchrones de manière synchrone pendant le rendu et suspend le rendu si elles sont encore en attente. use(context) peut être utilisé conditionnellement, contrairement à useContext. Associez-le toujours à Suspense pour le chargement et à ErrorBoundary pour les erreurs.

Ensuite

Prochaine leçon : **Actions React et useActionState** — vous définirez des actions côté serveur et côté client, puis gérerez les soumissions de formulaires avec un état d’attente.

Questions Fréquemment Posées

La leçon « Le hook use() pour les ressources asynchrones » est-elle gratuite ?

Oui — le texte complet de « Le hook use() pour les ressources asynchrones » 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 « Le hook use() pour les ressources asynchrones » ?

Lisez les promesses et le contexte pendant le rendu avec le hook use() de React 19. 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 2 sur 4.

Combien de temps prend la leçon « Le hook use() pour les ressources asynchrones » ?

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. Les composants serveur React expliqués
  2. Le hook use() pour les ressources asynchrones
  3. Actions React et useActionState
  4. useOptimistic pour un retour instantané
← Retour à React Academy