Un composant d'ordre supérieur (HOC) est un modèle avancé de React pour réutiliser la logique des composants. Il s'agit en fait d'une fonction qui prend un composant en argument et renvoie un nouveau composant avec de nouvelles props ou des comportements supplémentaires.
Voici un exemple simple d'un HOC :
function avecCoucou(Component) {
return function EnhancedComponent(props) {
return (
<div>
<Component {...props} />
<div>Coucou !</div>
</div>
);
};
}
Ici, avecCoucou
est un HOC. Il génère un nouveau composant qui affiche le composant d'origine en plus d'un message Coucou !
, peu importe quelle est le composant passé en argument.
Les HOC peuvent être utilisés pour effectuer diverses tâches réutilisables comme l'injection de props, l'abstraction de l'état, etc. Dans l'écosystème React, l'utilisation de HOC est courante. Par exemple, le connect
de react-redux
ou le withRouter
de react-router
sont des HOC.
Il convient de noter qu'un HOC n'est pas un composant React en soi, mais une approche de composition de composants pour les préoccupations de logique inter-cocheuses.
Il est préférable de toujours propager les props non utilisées au composant enfant dans un HOC pour assurer que toutes les props attendues sont reçues par le composant enfant. De plus, le nom affiché du composant HOC doit être déclaré pour faciliter le débogage.
Les HOC peuvent être un outil très puissant lors de la construction d'applications React, mais ils doivent être utilisés judicieusement car trop de HOC ou de HOC imbriqués peuvent rendre le code confus et difficile à suivre.