Maison > interface Web > js tutoriel > Modèles de conception essentiels pour les applications React : améliorer votre jeu de composants

Modèles de conception essentiels pour les applications React : améliorer votre jeu de composants

Mary-Kate Olsen
Libérer: 2024-09-27 10:51:02
original
1020 Les gens l'ont consulté

Essential Design Patterns for React Apps: Leveling Up Your Component Game

Si vous êtes dans le monde React depuis un certain temps, vous avez probablement entendu l'expression « C'est juste du JavaScript ». Même si cela est vrai, cela ne signifie pas que nous ne pouvons pas bénéficier de modèles éprouvés pour rendre nos applications React plus maintenables, réutilisables et tout à fait agréables à utiliser. Plongeons dans quelques modèles de conception essentiels qui peuvent faire passer vos composants React de « meh » à « merveilleux » !

Pourquoi les modèles de conception sont importants dans React

Avant de nous lancer, parlons de l'éléphant dans la pièce : pourquoi s'embêter avec des modèles de conception ? Eh bien, chers amis passionnés de React, les modèles de conception sont comme les recettes secrètes du monde du codage. Ce sont des solutions éprouvées à des problèmes courants qui peuvent :

  1. Rendez votre code plus lisible et maintenable
  2. Favorisez la réutilisabilité dans votre application
  3. Résolvez des problèmes complexes avec des solutions élégantes
  4. Vous aider à communiquer plus efficacement vos idées avec d'autres développeurs

Maintenant que nous sommes sur la même longueur d'onde, explorons quelques modèles qui feront briller vos composants React plus fort qu'une voiture de sport fraîchement cirée !

1. Le modèle de composition des composants

Le modèle de composant de React est déjà un modèle puissant en soi, mais aller plus loin avec la composition peut conduire à un code plus flexible et réutilisable.

// Instead of this:
const Button = ({ label, icon, onClick }) => (
  <button onClick={onClick}>
    {icon && <Icon name={icon} />}
    {label}
  </button>
);

// Consider this:
const Button = ({ children, onClick }) => (
  <button onClick={onClick}>{children}</button>
);

const IconButton = ({ icon, label }) => (
  <Button>
    <Icon name={icon} />
    {label}
  </Button>
);
Copier après la connexion

Pourquoi c'est génial :

  • Composants plus flexibles et réutilisables
  • Plus facile à personnaliser et à étendre
  • Suit le principe de responsabilité unique

Conseil de pro : considérez vos composants comme des briques LEGO. Plus ils sont modulaires et composables, plus vous pouvez construire des structures étonnantes !

2. Le modèle conteneur/présentation

Ce modèle sépare la logique de votre composant de sa présentation, ce qui facilite le raisonnement et les tests.

// Container Component
const UserListContainer = () => {
  const [users, setUsers] = useState([]);

  useEffect(() => {
    fetchUsers().then(setUsers);
  }, []);

  return <UserList users={users} />;
};

// Presentational Component
const UserList = ({ users }) => (
  <ul>
    {users.map(user => (
      <li key={user.id}>{user.name}</li>
    ))}
  </ul>
);
Copier après la connexion

Pourquoi ça déchire :

  • Séparation claire des préoccupations
  • Plus facile à tester et à maintenir
  • Favorise la réutilisabilité du composant de présentation

Rappelez-vous : les conteneurs sont comme l'équipe des coulisses d'une pièce de théâtre, gérant tout le travail en coulisses, tandis que les éléments de présentation sont les acteurs, concentrés uniquement sur l'apparence du public.

3. Le modèle de composant d'ordre supérieur (HOC)

Les HOC sont des fonctions qui prennent un composant et renvoient un nouveau composant avec des fonctionnalités supplémentaires. Ce sont comme des power-ups pour vos composants !

const withLoader = (WrappedComponent) => {
  return ({ isLoading, ...props }) => {
    if (isLoading) {
      return <LoadingSpinner />;
    }
    return <WrappedComponent {...props} />;
  };
};

const EnhancedUserList = withLoader(UserList);
Copier après la connexion

Pourquoi c'est cool :

  • Permet la réutilisation du code sur différents composants
  • Garde vos composants propres et concentrés
  • Peut être composé pour plusieurs améliorations

Mise en garde : bien que les HOC soient puissants, ils peuvent conduire à un "enfer du wrapper" s'ils sont trop utilisés. Utilisez-les à bon escient !

4. Le modèle d'accessoires de rendu

Ce modèle implique de transmettre une fonction comme accessoire à un composant, vous donnant plus de contrôle sur ce qui est rendu.

const MouseTracker = ({ render }) => {
  const [position, setPosition] = useState({ x: 0, y: 0 });

  const handleMouseMove = (event) => {
    setPosition({ x: event.clientX, y: event.clientY });
  };

  return (
    <div onMouseMove={handleMouseMove}>
      {render(position)}
    </div>
  );
};

// Usage
<MouseTracker
  render={({ x, y }) => (
    <h1>The mouse is at ({x}, {y})</h1>
  )}
/>
Copier après la connexion

Pourquoi c'est chouette :

  • Très flexible et réutilisable
  • Évite les problèmes avec les HOC comme les collisions de noms d'accessoires
  • Permet un rendu dynamique basé sur la fonction fournie

Fait amusant : le modèle d'accessoires de rendu est si flexible qu'il peut même implémenter la plupart des autres modèles dont nous avons discuté !

5. Le modèle de crochet personnalisé

Les hooks sont les nouveaux venus dans React, et les hooks personnalisés vous permettent d'extraire la logique des composants dans des fonctions réutilisables.

const useWindowSize = () => {
  const [size, setSize] = useState({ width: 0, height: 0 });

  useEffect(() => {
    const handleResize = () => {
      setSize({ width: window.innerWidth, height: window.innerHeight });
    };

    window.addEventListener('resize', handleResize);
    handleResize(); // Set initial size

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

  return size;
};

// Usage
const MyComponent = () => {
  const { width, height } = useWindowSize();
  return <div>Window size: {width} x {height}</div>;
};
Copier après la connexion

Pourquoi c'est incroyable :

  • Permet un partage facile de la logique avec état entre les composants
  • Garde vos composants propres et concentrés
  • Peut remplacer de nombreuses utilisations des HOC et des accessoires de rendu

Conseil de pro : si vous vous retrouvez à répéter une logique similaire dans plusieurs composants, il est peut-être temps de l'extraire dans un hook personnalisé !

Conclusion : Pattern dynamisez vos applications React

Les modèles de conception dans React sont comme une ceinture utilitaire remplie de gadgets : ils vous donnent le bon outil pour le travail, quels que soient les défis que votre application vous lance. N'oubliez pas :

  1. Utilisez la composition des composants pour des interfaces utilisateur flexibles et modulaires
  2. Tirer parti du conteneur/présentation pour une séparation claire des préoccupations
  3. Employer des HOC pour des préoccupations transversales
  4. Utilisez les accessoires de rendu pour une flexibilité ultime
  5. Créez des Hooks personnalisés pour partager une logique avec état

En incorporant ces modèles dans votre boîte à outils React, vous serez sur la bonne voie pour créer des composants plus maintenables, réutilisables et élégants. Votre futur moi (et vos coéquipiers) vous remercieront lorsqu'ils parcourront votre base de code bien structurée !

Bon codage !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal