3.14 Diviser les composants en plusieurs composants
Notre composant DepenseItem commence à être chargé : il gère l'affichage de la date, du titre et du montant. C'est le moment de le diviser en plusieurs composants plus petits et réutilisables. Nous allons extraire la logique d'affichage de la date dans un composant DepenseDate dédié, qui pourra être réutilisé n'importe où.
Découpage en sous-composants
- Créer un nouveau fichier DepenseDate.js.
- Y déplacer la logique de la date.
- Recevoir la date via props.date.
- Importer et utiliser le composant dans DepenseItem.
Nous créons DepenseDate.js qui contient une fonction DepenseDate(props) renvoyant la structure visuelle de la date (mois, année, jour). Le composant est exporté avec export default DepenseDate. Dans DepenseItem.js, nous importons ce nouveau composant et l'utilisons comme une balise auto-fermante <DepenseDate date={...} />, en lui passant la date via une prop.
// DepenseDate.js
import "./DepenseDate.css";
function DepenseDate(props) {
const mois = props.date.toLocaleString('fr-FR', { month: 'long' });
const jour = props.date.toLocaleString('fr-FR', { day: '2-digit' });
const annee = props.date.getFullYear();
return (
<div className="depenses-date">
<div>{mois}</div>
<div>{annee}</div>
<div>{jour}</div>
</div>
);
}
export default DepenseDate;
Nous créons aussi un DepenseDate.css pour styler ce sous-composant. Cette approche par composition est au cœur de React : chaque composant a une responsabilité unique, son propre style et peut être réutilisé. Plus l'application grandit, plus ce découpage devient indispensable pour garder un code maintenable. À bientôt pour la suite.
En résumé
Dans cette leçon, vous apprenez à refactoriser un composant monolithique en le divisant en plusieurs composants réutilisables. L'approche consiste à créer des fichiers séparés pour chaque sous-composant (comme DépenseItem et DépenseDate), les exporter correctement, puis les importer dans le composant parent. Vous découvrez aussi comment organiser les feuilles de styles CSS dans des fichiers distincts pour maintenir une structure de code modulaire et maintenable.
Points clés
- Créer un nouveau fichier JSX pour chaque sous-composant (exemple : DépenseDate.jsx, DépenseItem.jsx)
- Exporter chaque composant et l'importer dans le fichier parent avec la syntaxe import/export
- Utiliser les props pour passer les données du composant parent aux composants enfants
- Associer chaque composant à son propre fichier CSS pour une meilleure organisation
- Nettoyer le code parent en supprimant les éléments qui ont été extraits vers les sous-composants
- Vérifier que les imports sont correctement définis pour éviter les erreurs lors du rendu
Questions fréquentes
Pourquoi diviser un composant en plusieurs composants ?
Diviser les composants améliore la maintenabilité, la réutilisabilité et la clarté du code. Cela permet de rendre chaque composant responsable d'une seule tâche (Single Responsibility Principle) et facilite les tests et les modifications futures.
Comment importer un composant créé dans un fichier séparé ?
Utilisez la syntaxe import classique : import NomComposant from './NomComposant.jsx' en haut du fichier parent, puis utilisez le composant comme <NomComposant /> dans votre JSX.
Dois-je créer un fichier CSS séparé pour chaque sous-composant ?
C'est une bonne pratique recommandée. Créer un fichier CSS pour chaque composant (par exemple DépenseDate.css) maintient une meilleure organisation et évite les conflits de styles entre composants.