0Pricing
React Academy · Leçon

Composants d’ordre supérieur (HOC) expliqués

Enveloppez des composants pour injecter des propriétés, protéger des routes ou ajouter la journalisation via des fabriques de HOC.

Composants d’ordre supérieur (HOC) expliqués 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 comprendrez les composants d’ordre supérieur (HOC), apprendrez à les écrire, découvrirez leurs cas d’utilisation courants et étudierez leurs compromis par rapport aux crochets.

Qu’est-ce qu’un HOC ?

Un composant d’ordre supérieur est une fonction qui reçoit un composant en entrée et renvoie un nouveau composant amélioré. Le HOC ajoute un comportement (comme des propriétés, des vérifications d’authentification ou de la journalisation) sans modifier le composant d’origine.
// HOC signature
function withEnhancement(WrappedComponent) {
  return function Enhanced(props) {
    // add behaviour here
    return <WrappedComponent {...props} extraProp="value" />;
  };
}

HOC de protection d’authentification

Un HOC courant redirige les utilisateurs non authentifiés vers une page de connexion. Le composant d’origine n’a jamais besoin de connaître la logique d’authentification.
function withAuth(Component) {
  return function AuthGuard(props) {
    const isLoggedIn = useAuth();
    if (!isLoggedIn) return <Navigate to="/login" />;
    return <Component {...props} />;
  };
}

const ProtectedPage = withAuth(DashboardPage);

HOC de journalisation

Un HOC peut journaliser chaque rendu avec le nom et les propriétés du composant à des fins de débogage. Enveloppez n’importe quel composant avec withLogger pour ajouter un suivi.
function withLogger(Component) {
  return function Logged(props) {
    console.log('[render]', Component.displayName, props);
    return <Component {...props} />;
  };
}

Transmettre les propriétés

Étalez toujours toutes les propriétés reçues sur le composant enveloppé avec `{...props}`. Ne pas le faire rompt l’API du composant d’origine.
return function HOC(props) {
  return <WrappedComponent {...props} injectedProp={value} />;
};

Définir displayName

Les composants renvoyés par un HOC perdent leur nom dans React DevTools. Définissez un displayName pertinent afin de pouvoir les identifier dans l’arbre des composants.
function withAuth(Component) {
  function AuthGuard(props) { /* ... */ }
  AuthGuard.displayName = 'withAuth(' + (Component.displayName || Component.name) + ')';
  return AuthGuard;
}

Transmettre les références

Par défaut, les HOC bloquent les références. Utilisez `React.forwardRef` dans le HOC pour transmettre les références au composant enveloppé.
function withStyle(Component) {
  return React.forwardRef(function (props, ref) {
    return <Component ref={ref} {...props} className="styled" />;
  });
}

HOC, propriétés de rendu ou crochets

Les HOC injectent des propriétés et peuvent protéger des routes. Les propriétés de rendu transmettent une interface utilisateur dynamique. Les crochets personnalisés extraient la logique. Dans React moderne, les crochets sont privilégiés, car ils évitent l’enfer des enveloppes et sont plus faciles à composer. Les HOC sont utiles pour les composants de classe ou les intégrations tierces.

Enfer des enveloppes

Appliquer de nombreux HOC crée une imbrication profonde dans l’arbre des composants : `withTheme(withAuth(withLogger(MyPage)))`. DevTools affiche de nombreuses couches d’enveloppes anonymes. Les crochets évitent complètement ce problème.

Les HOC en pratique

`connect()` de Redux, `withRouter()` de React Router v5 et `observer()` de MobX sont tous des HOC. Comprendre les HOC vous aide à utiliser ces anciennes API de bibliothèques.

Vérification rapide

Que doit toujours faire un composant d’ordre supérieur avec les propriétés qu’il reçoit ?

Récapitulatif

Les HOC sont des fonctions qui reçoivent un composant et en renvoient un autre, amélioré. Ils injectent des propriétés, protègent des routes et ajoutent de la journalisation. Étalez toujours les propriétés, définissez displayName et transmettez les références. Dans React moderne, préférez les crochets.

Suite

Leçon suivante : **HOC, propriétés de rendu ou crochets personnalisés** — vous comparerez les trois stratégies de partage de code en matière de lisibilité, de tests et de composition.

Questions Fréquemment Posées

La leçon « Composants d’ordre supérieur (HOC) expliqués » est-elle gratuite ?

Oui — le texte complet de « Composants d’ordre supérieur (HOC) expliqués » 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 « Composants d’ordre supérieur (HOC) expliqués » ?

Enveloppez des composants pour injecter des propriétés, protéger des routes ou ajouter la journalisation via des fabriques de HOC. 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 « Composants d’ordre supérieur (HOC) expliqués » ?

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. Modèle des propriétés de rendu
  2. Composants d’ordre supérieur (HOC) expliqués
  3. HOC, propriétés de rendu ou hooks personnalisés
  4. Refactoriser un HOC en hook personnalisé
← Retour à React Academy