OUJOOD.COM
Introduction
L'une des fonctionnalités puissantes de React est sa capacité à rendre dynamiquement des listes basées sur des tableaux ou des objets. Grâce à la méthode .map()
, vous pouvez facilement itérer sur des collections de données pour générer des éléments JSX correspondants.
Dans ce chapitre, nous allons explorer :
- Comment utiliser la méthode
.map()
pour créer des listes. - Pourquoi ajouter une clé (
key
) à chaque élément de liste. - Des exemples pratiques pour illustrer leur fonctionnement.
1. Création de Listes avec la Méthode .map()
La méthode .map()
est utilisée pour itérer sur un tableau et générer une nouvelle collection d'éléments JSX. Voici un exemple simple où nous affichons une liste de noms :
function ListeNoms() { const noms = ['Alice', 'Bob', 'Charlie']; return ( <ul> {noms.map((nom, index) => ( <li key={index}>{nom}</li> ))} </ul> ); } ReactDOM.render(<ListeNoms />, document.getElementById('root'));
Explication détaillée :
-
const noms = ['Alice', 'Bob', 'Charlie'];
:- Cette ligne définit un tableau appelé
noms
contenant trois éléments : "Alice", "Bob" et "Charlie".
- Cette ligne définit un tableau appelé
-
{noms.map((nom, index) => (...))}
:- La méthode
.map()
est appelée sur le tableaunoms
. - Elle prend une fonction fléchée en argument, qui est exécutée pour chaque élément du tableau.
(nom, index)
: Pour chaque élément,nom
représente la valeur actuelle, etindex
représente sa position dans le tableau.
- La méthode
-
<li key={index}>{nom}</li>
:- Chaque élément du tableau est converti en un élément
<li>
. key={index}
: Une clé unique est assignée à chaque élément pour aider React à identifier les changements dans la liste.
- Chaque élément du tableau est converti en un élément
-
ReactDOM.render(<ListeNoms />, document.getElementById('root'));
:- Cette ligne rend le composant
ListeNoms
dans l'élément HTML ayant l'idroot
. - Le résultat sera une liste non ordonnée (
<ul>
) contenant trois éléments (<li>
).
- Cette ligne rend le composant
2. Pourquoi Utiliser une Clé (key
) ?
Lorsque vous créez des listes dans React, il est essentiel d'assigner une clé unique à chaque élément. Cela permet à React d'identifier efficacement les éléments lorsqu'ils sont ajoutés, mis à jour ou supprimés, garantissant ainsi des performances optimales.
Voici un exemple plus complexe où nous utilisons des objets pour créer une liste de personnes :
function ListePersonnes() { const personnes = [ { id: 1, nom: 'Alice', age: 25 }, { id: 2, nom: 'Bob', age: 30 }, { id: 3, nom: 'Charlie', age: 35 } ]; return ( <ul> {personnes.map(personne => ( <li key={personne.id}> {personne.nom} ({personne.age} ans) </li> ))} </ul> ); } ReactDOM.render(<ListePersonnes />, document.getElementById('root'));
Explication détaillée :
-
const personnes = [...]
:- Cette ligne définit un tableau d'objets appelé
personnes
, où chaque objet représente une personne avec unid
, unnom
et unage
.
- Cette ligne définit un tableau d'objets appelé
-
{personnes.map(personne => (...))}
:- La méthode
.map()
itère sur le tableaupersonnes
. - Pour chaque objet
personne
, un élément<li>
est créé.
- La méthode
-
<li key={personne.id}>
:- Une clé unique (
key={personne.id}
) est assignée à chaque élément pour aider React à gérer les mises à jour de manière performante.
- Une clé unique (
-
{personne.nom} ({personne.age} ans)
:- Les propriétés
nom
etage
de chaque objet sont insérées dynamiquement dans le texte affiché.
- Les propriétés
3. Exemple Complet : Formulaire avec Ajout de Noms
Imaginons que vous souhaitez créer un formulaire qui permet à l'utilisateur d'ajouter des noms à une liste. Voici comment cela peut être fait :
import React, { useState } from 'react'; function GestionListe() { const [noms, setNoms] = useState([]); const [input, setInput] = useState(''); function handleChange(event) { setInput(event.target.value); } function handleSubmit(event) { event.preventDefault(); if (input.trim() !== '') { setNoms([...noms, input]); setInput(''); } } return ( <div> <form onSubmit={handleSubmit}> <input type="text" value={input} onChange={handleChange} placeholder="Ajoutez un nom..." /> <button type="submit">Ajouter</button> </form> <h2>Liste des noms :</h2> <ul> {noms.map((nom, index) => ( <li key={index}>{nom}</li> ))} </ul> </div> ); } ReactDOM.render(<GestionListe />, document.getElementById('root'));
Explication détaillée :
-
const [noms, setNoms] = useState([]);
:- Initialise l'état
noms
comme un tableau vide. setNoms
est une fonction pour mettre à jour cet état.
- Initialise l'état
-
const [input, setInput] = useState('');
:- Initialise l'état
input
comme une chaîne vide. setInput
met à jour cet état lorsque l'utilisateur saisit du texte.
- Initialise l'état
-
function handleChange(event)
:- Cette fonction est appelée à chaque modification du champ de saisie.
setInput(event.target.value)
met à jour l'étatinput
avec la valeur saisie.
-
function handleSubmit(event)
:- Cette fonction est appelée lors de la soumission du formulaire.
event.preventDefault()
empêche le comportement par défaut du navigateur (rechargement de la page).setNoms([...noms, input])
ajoute le nouveau nom à la liste existante.setInput('')
réinitialise le champ de saisie après l'ajout.
-
{noms.map((nom, index) => (...))}
:- Itère sur le tableau
noms
pour générer dynamiquement des éléments<li>
. key={index}
assigne une clé unique à chaque élément pour optimiser les performances.
- Itère sur le tableau
4. Meilleures Pratiques pour Travailler avec des Listes
Pour travailler efficacement avec des listes dans React, voici quelques conseils :
- Toujours inclure une clé (
key
) : Cela aide React à identifier chaque élément de manière unique et à optimiser les mises à jour. - Utilisez des identifiants uniques comme clés : Si vos données possèdent un ID unique (par exemple, depuis une base de données), utilisez-le plutôt que l'index du tableau.
- Évitez de modifier directement l'état : Utilisez toujours des méthodes comme
setState
ou les hooks pour mettre à jour l'état de manière immuable.
Conclusion
Vous avez maintenant appris à travailler avec des listes dans React en utilisant la méthode .map()
et en comprenant l'importance des clés (key
). En combinant ces techniques avec des formulaires interactifs, vous pouvez créer des interfaces utilisateur dynamiques et réactives.
Prochain chapitre : Formulaires React