React est aujourd’hui la bibliothĂšque JavaScript la plus utilisĂ©e pour construire des interfaces web. Que tu regardes les offres d’emploi de dĂ©veloppeur front-end ou que tu veuilles donner un coup de jeune Ă tes projets, React revient partout. Mais par oĂč commencer quand on vient du HTML/CSS ou d’un autre langage ? Ce guide te donne les fondamentaux concrets pour crĂ©er ta premiĂšre application React, avec du vrai code, pas de thĂ©orie abstraite.
Pourquoi React ? Le problĂšme qu’il rĂ©sout
Avant React, manipuler le DOM avec JavaScript pur (ou jQuery) devenait vite un cauchemar : chaque donnĂ©e affichĂ©e devait ĂȘtre mise Ă jour Ă la main dans plusieurs endroits du code. Tu changes une valeur, tu oublies un endroit, et l’interface ment sur l’Ă©tat rĂ©el de ton application.
React apporte une rĂ©ponse radicale : tu dĂ©cris ce que tu veux afficher, et React se charge de mettre Ă jour le DOM tout seul. C’est le principe de la programmation dĂ©clarative. Tu ne dis plus « ajoute ce <li> dans cette liste », tu dis « voici la liste, avec ces donnĂ©es » â et React calcule la diffĂ©rence avec l’Ă©cran actuel pour ne modifier que ce qui a changĂ©. RĂ©sultat : un code plus simple Ă Ă©crire, Ă relire et Ă maintenir.
Les composants : le cĆur de React
Tout dans React est un composant : une fonction JavaScript qui retourne du contenu Ă afficher. C’est la brique de base de ton interface.
function CarteUtilisateur() {
return <div>Bonjour, je suis un composant !</div>;
}
export default CarteUtilisateur;Un composant, c’est simple : une fonction dont le nom commence par une majuscule, qui retourne du JSX. Tu peux ensuite rĂ©utiliser ce composant partout dans ton application, comme un Lego. C’est cette capacitĂ© de composition qui rend React si puissant : tu construis des petites briques simples, puis tu les assemble en Ă©crans complexes.
JSX : du HTML dans du JavaScript
Le JSX est la syntaxe qui ressemble Ă du HTML mais qui vit dans tes fichiers JavaScript. ConcrĂštement :
function Accueil() {
const prenom = "Sarah";
return (
<h1>Bonjour {prenom} !</h1>
);
}Les accolades { } permettent d'insĂ©rer des expressions JavaScript directement dans ton « HTML ». C'est la premiĂšre chose qui surprend les dĂ©butants : on mĂ©lange structure et logique au mĂȘme endroit. Et c'est justement ce qui rend le code plus facile Ă suivre : tu vois immĂ©diatement ce qui est affichĂ© et d'oĂč viennent les donnĂ©es.
Deux petites diffĂ©rences Ă retenir avec le HTML classique : on Ă©crit className au lieu de class (car class est un mot rĂ©servĂ© en JavaScript), et les attributs se nomment en camelCase (onClick, onSubmitâŠ).
Props et state : les deux concepts clés
Ces deux notions sont LA différence entre un débutant qui copie-colle et un développeur React qui comprend ce qu'il fait.
Les props : des données qui entrent
Les props (propriétés) sont les données qu'un parent passe à son composant enfant. Elles sont en lecture seule : l'enfant les reçoit, il ne les modifie pas.
function Bienvenue({ nom }) {
return <p>Heureux de te voir, {nom} !</p>
}
// Usage :
<Bienvenue nom="Sarah" />
<Bienvenue nom="Karim" />Un seul composant Bienvenue, affiché avec des données différentes. C'est ça, la réutilisation.
Le state : des données qui vivent
Le state (état), lui, est interne au composant et peut changer au fil du temps : un champ de formulaire, un compteur, une liste qui se remplit. Quand le state change, React re-rend automatiquement le composant avec les nouvelles valeurs.
import { useState } from "react";
function Compteur() {
const [compte, setCompte] = useState(0);
return (
<div>
<p>Tu as cliqué {compte} fois</p>
<button onClick={() => setCompte(compte + 1)}>
Clique-moi
</button>
</div>
);
}Retiens la rĂšgle d'or : jamais de mutation directe. On ne fait pas compte = compte + 1, on appelle toujours setCompte() â c'est ce qui prĂ©vient React que quelque chose a changĂ© et dĂ©clenche la mise Ă jour de l'interface.
Les hooks essentiels : useState et useEffect
Les hooks sont des fonctions spéciales qui « accrochent » des capacités à tes composants. Les deux premiers à maßtriser :
useState: gĂ©rer l'Ă©tat local (on vient de le voir).useEffect: exĂ©cuter du code quand le composant apparaĂźt ou quand une donnĂ©e change â parfait pour charger des donnĂ©es depuis une API.
import { useEffect, useState } from "react";
function ListeArticles() {
const [articles, setArticles] = useState([]);
useEffect(() => {
fetch("https://api.exemple.com/articles")
.then((r) => r.json())
.then((data) => setArticles(data));
}, []); // [] = une seule fois au montage
return (
<ul>
{articles.map((a) => (
<li key={a.id}>{a.titre}</li>
))}
</ul>
);
}Le tableau vide [] en second argument dit Ă React : « exĂ©cute ceci uniquement quand le composant est montĂ© ». Sans lui, l'effet s'exĂ©cuterait Ă chaque rendu â boucle infinie garantie, une erreur classique chez les dĂ©butants.
Ton premier composant pas Ă pas
Assemble tout ça dans un mini-projet concret : une liste de tĂąches. Elle a un champ de saisie, un bouton d'ajout et l'affichage de la liste â avec uniquement useState.
import { useState } from "react";
function TodoList() {
const [tache, setTache] = useState("");
const [taches, setTaches] = useState([]);
function ajouter(e) {
e.preventDefault();
if (tache.trim() === "") return;
setTaches([...taches, tache]);
setTache("");
}
return (
<div>
<h1>Mes tĂąches</h1>
<form onSubmit={ajouter}>
<input
value={tache}
onChange={(e) => setTache(e.target.value)}
placeholder="Nouvelle tĂąche"
/>
<button type="submit">Ajouter</button>
</form>
<ul>
{taches.map((t, i) => (
<li key={i}>{t}</li>
))}
</ul>
</div>
);
}
export default TodoList;Ce petit programme contient déjà 80 % des concepts de React : un composant, du JSX, un state, un formulaire contrÎlé et un rendu de liste. Si tu le comprends ligne par ligne, tu as le niveau pour attaquer n'importe quel tutoriel React avancé.
Les erreurs de débutant à éviter
- Oublier la clé
keydans les listes : React affiche un warning et les performances (et le comportement) se dĂ©gradent. Utilise toujours un identifiant unique, jamais l'index si la liste peut ĂȘtre rĂ©ordonnĂ©e. - Modifier le state directement :
taches.push(tache)ne déclenche aucun re-rendu. Toujours créer une nouvelle valeur avecsetTaches([...taches, tache]). - Mettre trop de choses dans un seul composant : un composant de 400 lignes est un signal d'alarme. Découpe en sous-composants.
- Ignorer les hooks dans les conditions : les hooks doivent ĂȘtre appelĂ©s au niveau supĂ©rieur du composant, pas dans un
ifou une boucle. - Apprendre Redux trop tĂŽt : pour 90 % des applications,
useStateetuseEffectsuffisent largement au début.
Et maintenant, par oĂč continuer ?
Une fois ces bases en place, les prochaines étapes naturelles : les formulaires avancés et la validation, la communication parent-enfant, le routage avec React Router, puis l'outillage moderne (Vite, ESLint, tests). Et surtout : construis des projets. Un mini-projet personnel vaut dix tutoriels suivis passivement.
React s'apprend par la pratique, et chaque petit projet renforce ta compréhension des composants, du state et du flux de données. Commence petit, code tous les jours, et dans quelques semaines tu seras à l'aise pour créer des interfaces complÚtes.
Tu veux progresser plus vite avec un accompagnement et des exercices corrigés ? Contacte-moi pour discuter de ton projet et de tes objectifs.