"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Maîtriser la conception de composants dans React : des bases aux meilleures pratiques

Maîtriser la conception de composants dans React : des bases aux meilleures pratiques

Publié le 2024-10-31
Parcourir:146

Mastering Component Design in React: From Basics to Best Practices

React est devenu un framework incontournable pour les développeurs cherchant à créer des applications Web dynamiques et interactives. Son architecture basée sur des composants permet aux développeurs de créer des blocs de construction réutilisables qui rendent le développement de l'interface utilisateur plus gérable et évolutif. Mais pour vraiment maîtriser React, il est essentiel de comprendre comment concevoir des composants efficaces et réutilisables. Dans ce blog, nous explorerons les éléments essentiels de la conception de composants, les modèles avancés et les meilleures pratiques pour vous aider à créer des applications React évolutives.

1. La fondation : comprendre les composants React

À la base, un composant React est une fonction ou une classe JavaScript qui accepte les entrées (accessoires) et renvoie JSX, qui décrit ce qui doit apparaître à l'écran.

Il existe deux principaux types de composants :

  • Composants fonctionnels : introduits en tant que composants sans état, ils ont évolué pour gérer l'état et les effets secondaires via React Hooks. La plupart des bases de code React modernes préfèrent les composants fonctionnels pour leur simplicité et leurs avantages en termes de performances.

  const Button = ({ label }) => ;


  • Composants de classe : ils étaient autrefois le principal moyen de gérer l'état des composants, mais sont tombés en disgrâce avec l'avènement des hooks. Cependant, les comprendre peut toujours être utile lorsque vous travaillez sur des projets existants.

class Button extends React.Component {
  render() {
    return ;
  }
}


2. Création de composants réutilisables

Les composants réutilisables sont la pierre angulaire de toute application React évolutive. Voici quelques principes à suivre :

un. Utiliser efficacement les accessoires

Les accessoires permettent aux données de circuler des composants parent vers les composants enfants. Lors de la conception de composants réutilisables, assurez-vous qu'ils acceptent les accessoires dynamiques pour les rendre flexibles pour différents contextes.

Exemple : composant de bouton avec des accessoires dynamiques


const Button = ({ label, onClick, size = 'medium', variant = 'primary' }) => {
  return (
    
  );
};


Dans cet exemple, Button est réutilisable car il accepte des accessoires tels que label, onClick, size et variant, ce qui le rend adaptable dans toute l'application.

b. Composition sur héritage

Au lieu d'étendre les composants, utilisez la composition pour créer des composants plus complexes. Cette approche s'aligne sur la philosophie de React consistant à créer des composants indépendants et des unités découplées.

Exemple : Composer un modal avec un bouton


const Modal = ({ isOpen, onClose, children }) => {
  if (!isOpen) return null;

  return (
    
{children}
); };

Le composant Modal est composé du composant Button pour créer un modal réutilisable qui peut être rempli avec n'importe quel contenu (enfants).

3. Modèles de composants avancés

À mesure que votre application se développe, des composants simples peuvent ne pas suffire. Voici quelques modèles avancés pour gérer la complexité.

un. Composants d'ordre supérieur (HOC)

Un composant d'ordre supérieur est une fonction qui prend un composant et en renvoie un nouveau, en injectant souvent des accessoires ou une logique supplémentaire.

Exemple : journalisation HOC


const withLogging = (WrappedComponent) => {
  return (props) => {
    console.log('Component rendered with props:', props);
    return ;
  };
};

const EnhancedButton = withLogging(Button);


Ce HOC enveloppe Button et enregistre ses accessoires chaque fois qu'il est rendu, ajoutant des fonctionnalités supplémentaires sans modifier le composant d'origine.

b. Accessoires de rendu

Ce modèle implique de transmettre une fonction comme accessoire pour partager la logique entre les composants.

Exemple : Récupérer un composant avec des accessoires de rendu


const Fetch = ({ url, render }) => {
  const [data, setData] = React.useState(null);

  React.useEffect(() => {
    fetch(url)
      .then((response) => response.json())
      .then((data) => setData(data));
  }, [url]);

  return render(data);
};

// Usage
{JSON.stringify(data)}
} />;

Ici, Fetch ne se soucie pas de la manière dont les données sont restituées. Au lieu de cela, il délègue le rendu à l'accessoire de rendu, ce qui le rend très flexible.

c. Crochets personnalisés

Les hooks personnalisés constituent un moyen puissant de partager la logique entre les composants tout en les gardant propres et lisibles. Les hooks vous permettent d'encapsuler une logique qui peut être réutilisée entre les composants.

Exemple : Crochet personnalisé pour la largeur de la fenêtre


const useWindowWidth = () => {
  const [width, setWidth] = React.useState(window.innerWidth);

  React.useEffect(() => {
    const handleResize = () => setWidth(window.innerWidth);
    window.addEventListener('resize', handleResize);

    return () => window.removeEventListener('resize', handleResize);
  }, []);

  return width;
};

const MyComponent = () => {
  const width = useWindowWidth();
  return 
Window width: {width}
; };

Ce hook useWindowWidth peut être utilisé dans n'importe quel composant pour suivre la taille de la fenêtre sans dupliquer la logique.

4. Gérer efficacement l’État

La gestion de l'état est l'un des aspects les plus cruciaux de la conception des composants React. Même si l'état local fonctionne bien pour les petites applications, les applications plus volumineuses peuvent nécessiter une solution plus robuste.

un. Élever l’État

Lorsque plusieurs composants doivent partager un état, la solution consiste à déplacer (ou « élever ») l'état vers l'ancêtre commun le plus proche.


const ParentComponent = () => {
  const [count, setCount] = React.useState(0);

  return (
    
); };

b. API de contexte

L'API Contexte est utile pour transmettre des données globales via l'arborescence des composants sans avoir besoin de prop-drill.


const ThemeContext = React.createContext();

const Parent = () => {
  const [theme, setTheme] = React.useState('light');

  return (
    
  );
};

const Child = () => {
  const theme = React.useContext(ThemeContext);
  return 
The theme is {theme}
; };

L'API Context est idéale pour les données globales telles que les thèmes, les données utilisateur ou les paramètres régionaux.

c. Utilisation des bibliothèques de gestion d'état

Pour les applications plus volumineuses, des bibliothèques telles que Redux ou Zustand peuvent vous aider à gérer efficacement les états complexes de votre application. Redux est idéal pour les applications qui nécessitent un état centralisé, tandis que Zustand propose une solution plus légère.

5. Optimisation des performances

À mesure que votre application se développe, les performances peuvent devenir un problème. Voici quelques techniques pour que les composants restent rapides et réactifs.

un. Mémorisation avec React.memo

React.memo évite les rendus inutiles en mémorisant la sortie du composant en fonction de ses accessoires.


const ExpensiveComponent = React.memo(({ data }) => {
return

{data}
;
});




b. useCallback et useMemo

Ces hooks aident à mémoriser les fonctions et les valeurs, garantissant qu'elles ne sont pas recréées à chaque rendu, à moins que les dépendances ne changent.


const MyComponent = ({ onClick }) => {
const handleClick = React.useCallback(() => {
console.log('Button clicked!');
}, []);

return ;
};




Conclusion

La maîtrise de la conception des composants React est essentielle pour créer des applications Web efficaces et évolutives. En vous concentrant sur les composants réutilisables, en adoptant des modèles avancés tels que les HOC et les hooks personnalisés, en gérant efficacement l'état et en optimisant les performances, vous pouvez créer des applications à la fois flexibles et maintenables.

Déclaration de sortie Cet article est reproduit sur : https://dev.to/ishanbagchi/mastering-component-design-in-react-from-basics-to-best-practices-1gih?1 En cas de violation, veuillez contacter study_golang@163 .com pour le supprimer
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3