Maison > interface Web > js tutoriel > le corps du texte

Comment créer des composants de liste réutilisables dans React avec des fonctions de rendu personnalisées ?

Linda Hamilton
Libérer: 2024-09-24 06:28:02
original
204 Les gens l'ont consulté

How to Build Reusable List Components in React with Custom Render Functions?

Lorsque vous travaillez dans React, il est courant d'avoir un composant de liste qui accepte les données et cartographie chaque élément pour l'afficher. Toutefois, différentes parties de votre application peuvent nécessiter des rendus différents pour les mêmes données. La meilleure solution pour cela est de rendre votre composant de liste plus flexible en utilisant un accessoire de rendu pour transmettre une fonction de rendu personnalisée.

Pourquoi est-ce nécessaire ?

Imaginez que vous ayez une liste d'utilisateurs dans votre application. Dans certaines zones, vous souhaitez afficher uniquement les noms d'utilisateur, et dans d'autres, vous devez afficher des informations plus détaillées telles que les adresses e-mail ou les photos de profil. La création de plusieurs composants de liste pour chaque cas d'utilisation peut entraîner une duplication de code et rendre le projet plus difficile à maintenir.

Quelle est la solution ?

Une solution simple et élégante consiste à faire en sorte que votre composant de liste accepte une fonction renderItem. Cette fonction prend un élément individuel (dans notre cas, un utilisateur) comme argument et renvoie un nœud React qui peut être restitué comme vous le souhaitez.

import React from 'react';

const List = ({ data, renderItem }) => {
  return (
    <ul>
      {data.map((item) => (
        <li key={item.id}>
          {renderItem(item)}
        </li>
      ))}
    </ul>
  );
};

export default List;

Copier après la connexion

Comment utiliser ce composant ?

import List from './List';

const users = [
  { id: 1, name: 'John Doe', email: 'john@example.com' },
  { id: 2, name: 'Jane Smith', email: 'jane@example.com' }
];

const UserList = () => {
  return (
    <List
      data={users}
      renderItem={(user) => <span>{user.name}</span>}
    />
  );
};

// or 

const DetailedUserList = () => {
  return (
    <List
      data={users}
      renderItem={(user) => (
        <div>
          <strong>{user.name}</strong>
          <p>{user.email}</p>
        </div>
      )}
    />
  );
};


Copier après la connexion

Pourquoi est-ce un excellent modèle ?

Ce modèle permet une flexibilité maximale avec une duplication de code minimale. Au lieu de créer un composant de liste différent pour chaque cas d'utilisation, vous disposez d'un composant de liste capable de gérer toutes les exigences de rendu.

Si vous avez travaillé avec React Native, ce modèle devrait vous sembler familier, car il est utilisé dans leurs composants de liste comme FlatList. C'est une solution éprouvée et fiable pour le rendu des listes.

En autorisant votre composant de liste à accepter un accessoire renderItem, vous pouvez facilement créer des composants réutilisables qui s'adaptent à différentes parties de votre application. Cette approche simplifie votre base de code, facilite sa maintenance et améliore l'évolutivité de votre application.

Maintenant que vous avez appris ce modèle, essayez-le dans vos projets React, et vous verrez à quel point il est puissant et flexible ! 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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!