Un composant est un bloc d'UI réutilisable. C'est simplement une fonction JavaScript qui retourne du JSX.
Pense à des briques LEGO : on construit une page en assemblant des composants.
// Un composant = une fonction qui commence par une Majuscule
function Bonjour() {
return <h2>Bonjour le monde !</h2>;
}
// On l'utilise comme une balise HTML
root.render(<Bonjour />);
// ✅ Correct
function MonComposant() { ... }
function CarteUtilisateur() { ... }
// ❌ Incorrect — React le traitera comme une balise HTML
function monComposant() { ... }
function Visible() {
return <p>Je suis visible</p>;
}
function Invisible() {
return null; // Ne rend rien dans le DOM
}
function Bouton() {
return <button>Cliquez-moi</button>;
}
// On peut l'utiliser autant de fois qu'on veut
function App() {
return (
<div>
<Bouton />
<Bouton />
<Bouton />
</div>
);
}
Les composants peuvent contenir d'autres composants. C'est le principe de composition.
function Header() {
return (
<header>
<h1>Mon Site</h1>
<Navigation />
</header>
);
}
function Navigation() {
return (
<nav>
<a href="#">Accueil</a> |
<a href="#">À propos</a> |
<a href="#">Contact</a>
</nav>
);
}
function Footer() {
return <footer><p>© 2026 Mon Site</p></footer>;
}
function App() {
return (
<>
<Header />
<main><p>Contenu de la page</p></main>
<Footer />
</>
);
}
React organise les composants en arbre hiérarchique :
App
├── Header
│ └── Navigation
├── Main
│ ├── CarteUtilisateur
│ └── ListeArticles
│ ├── Article
│ └── Article
└── Footer
Chaque composant gère son propre rendu, mais le parent contrôle quand ses enfants s'affichent.
Les deux syntaxes sont valides :
// Déclaration de fonction (hoistée)
function Bonjour() {
return <p>Hello</p>;
}
// Fonction fléchée (const — non hoistée)
const Bonjour = () => {
return <p>Hello</p>;
};
// Fonction fléchée avec retour implicite (pas de {})
const Bonjour = () => <p>Hello</p>;
Quand créer un nouveau composant ?
▼ Page construite avec des composants imbriqués
MonComposant).