BaliseTonSite

Pourquoi React ?

Débloque une nouvelle classe de super-pouvoirs pour tes interfaces.

Imagine : tu joues à un RPG et tu as passé tes premiers niveaux en maniant une simple épée en bois (le JavaScript classique). C'était parfait pour couper des buissons ou affronter de petits monstres. Mais là, tu entres dans un donjon de haut niveau. Les combats demandent de la stratégie, de la rapidité et des combos complexes. Il te faut un équipement légendaire : c'est le moment où tu débloques la classe React.

Créée par Meta (Facebook) en 2013, React n'est pas juste un outil de plus. C'est un changement complet de paradigme qui va transformer ta façon de penser et de construire des applications web interactives. Ton évolution commence ici.

1.1Le problème de la manipulation manuelle du DOM

En JavaScript Vanilla (classique), pour modifier ce qui s'affiche à l'écran, tu dois cibler manuellement le DOM. Tu écris du code impératif, c'est-à-dire que tu décris chaque étape technique au navigateur :

// JavaScript impératif : "Comment faire"
const bouton = document.getElementById("bouton-panier");
const badge = document.getElementById("badge-panier");

let articles = 0;

bouton.addEventListener("click", () => {
  articles++;
  // Étape manuelle 1 : Mettre à jour le texte
  badge.textContent = articles;
  
  // Étape manuelle 2 : Changer le style si panier vide ou plein
  if (articles > 0) {
    badge.classList.remove("hidden");
    badge.classList.add("bg-cyan-500");
  }
});

Sur un petit compteur, ça va. Mais imagine une application réelle : un e-commerce ou un dashboard de jeu. Si l'utilisateur ajoute un objet à son équipement, tu dois :

  • Mettre à jour le poids de l'inventaire.
  • Mettre à jour la force du personnage.
  • Actualiser la liste visuelle des objets équipés.
  • Vérifier s'il a assez d'or pour cet équipement (et désactiver le bouton d'achat si besoin).

Le danger du code spaghetti : Une seule action (clic sur Acheter) t'oblige à écrire du code pour modifier manuellement 4 ou 5 éléments différents sur ton site. Si tu oublies de mettre à jour un seul de ces éléments, ton interface devient désynchronisée. C'est la source numéro 1 des bugs sur les applications complexes.

1.2Le modèle déclaratif de React

React résout ce problème en introduisant le modèle déclaratif. Tu ne décris plus comment modifier l'interface étape par étape. Tu décris simplement ce que l'interface doit afficher en fonction de tes données (l'état) :

// React déclaratif : "Ce qu'on veut afficher"
import { useState } from "react";

function Panier() {
  const [articles, setArticles] = useState(0);

  // Tu décris le résultat final. React se charge de faire
  // les sélections et les modifications du DOM à ta place.
  return (
    <div>
      <button onClick={() => setArticles(articles + 1)}>
        Ajouter au panier
      </button>
      
      {/* Si articles > 0, on affiche le badge, sinon rien */}
      {articles > 0 && (
        <span className="bg-cyan-500 text-white px-2 py-1 rounded">
          {articles} articles
        </span>
      )}
    </div>
  );
}

Impératif vs Déclaratif

L'approche impérative est comme donner des directions de conduite précises à un chauffeur : "Prends la première à droite, avance de 500m, serre à gauche...". L'approche déclarative est comme lui donner une adresse GPS : "Emmène-moi au 12 rue du Web" et le laisser gérer la route.

1.3Le Virtual DOM : la vitesse sous le capot

Modifier le DOM du navigateur (la structure HTML de la page) est l'opération la plus lente et la plus coûteuse en performance pour le navigateur. Si tu le modifies trop souvent ou de manière désordonnée, ton site va ramer et saccader.

Pour éviter cela, React utilise une arme secrète : le Virtual DOM (DOM Virtuel).

// Comment fonctionne le Virtual DOM :
1. Données changent (ex: articles + 1)
⬇️
2. React génère un nouveau DOM Virtuel en mémoire (instantané, ultra léger)
⬇️
3. React compare l'ancien et le nouveau DOM Virtuel ("Diffing")
⬇️
4. React met à jour UNIQUEMENT le strict nécessaire dans le vrai DOM ("Reconciliation")

Grâce au Virtual DOM, si tu as une liste de 10 000 monstres et que tu en modifies un seul, React ne va pas redessiner toute la liste. Il va cibler chirurgicalement la ligne modifiée et ne changer que celle-ci dans le navigateur. C'est transparent pour toi, et ultra rapide pour l'utilisateur.

1.4Démarrer un projet moderne avec Vite

Pour coder avec React aujourd'hui, on utilise Vite. C'est le compagnon de route indispensable qui remplace l'ancien outil obsolète Create React App. Vite configure tout ton projet en quelques secondes et offre un rechargement instantané quand tu modifies ton code.

# 1. Lancer la création du projet avec le template React + TypeScript
npm create vite@latest mon-app-hero -- --template react-ts

# 2. Entrer dans le dossier du projet
cd mon-app-hero

# 3. Installer les dépendances de base
npm install

# 4. Lancer le serveur de développement local
npm run dev

Ouvre ton navigateur sur l'adresse locale fournie par le terminal (généralement http://localhost:5173) : ton serveur de développement tourne et ton application React est prête !

1.5Pourquoi ton projet n'a qu'un seul fichier HTML ?

Si tu as l'habitude de créer un fichier HTML pour chaque page de ton site (comme index.html, contact.html, blog.html), tu risques d'être surpris en ouvrant un projet React. Ici, il n'y a qu'un seul et unique fichier HTML à la racine de ton projet.

C'est ce qu'on appelle une **Single Page Application** (ou SPA pour les intimes). Pas de panique devant ce mot technique : cela signifie simplement "Application sur une seule page". Au lieu de demander au navigateur de charger une toute nouvelle page à chaque clic (ce qui provoque un écran blanc frustrant de quelques secondes), React va simplement vider le contenu de l'écran et y injecter tes nouveaux composants à la volée. Pour ton utilisateur, la navigation devient instantanée, comme dans un jeu vidéo.

Si tu ouvres ce fichier index.html unique, tu verras qu'il est presque vide :

<!-- index.html (simplifié) -->
<!DOCTYPE html>
<html lang="fr">
  <head>
    <meta charset="UTF-8" />
    <title>Mon App Hero</title>
  </head>
  <body>
    <!-- Le point d'ancrage unique de toute ton application -->
    <div id="root"></div>
    
    <!-- L'entrée de ton script React -->
    <script type="module" src="/src/main.tsx"></script>
  </body>
</html>

C'est le fichier src/main.tsx qui va venir injecter dynamiquement tes composants React dans la div d'identifiant root :

// src/main.tsx
import React from "react";
import ReactDOM from "react-dom/client";
import App from "./App"; // Ton composant principal
import "./index.css";    // Tes styles globaux

// On cible le point d'ancrage et on y injecte notre composant racine <App />
ReactDOM.createRoot(document.getElementById("root")!).render(
  <React.StrictMode>
    <App />
  </React.StrictMode>
);

À partir de ce moment, React prend le contrôle absolu de l'affichage. C'est lui qui va dessiner, supprimer et mettre à jour le HTML de ta page au fil de l'utilisation, sans que la page n'ait jamais besoin de se recharger.

1.6Quand utiliser React ?

React est un outil puissant, mais comme toute arme de haut niveau, elle n'est pas adaptée à tous les combats. Voici comment choisir :

Type de projetJavaScript classique (Vanilla)React
Site vitrine simple (sans états)Idéal (rapide, léger, pas de surcoût)Overkill (trop lourd pour pas grand-chose)
Page interactive moyenne (ex: formulaire de contact)Parfait (quelques lignes de JS suffisent)Optionnel (faisable mais non indispensable)
Application web complexe (Dashboard, SaaS, e-commerce)Galère (le code spaghetti devient intenable)Idéal (structure propre, state géré, réutilisable)
Application temps réel (Chat, Éditeur collaboratif, Jeux)Cauchemar (impossible à synchroniser à la main)Indispensable (React réagit en temps réel à l'état)

Grimoire de connaissances

Pas de panique si tout n'est pas encore 100% limpide dans ta tête ou si la structure des fichiers te paraît impressionnante. C'est tout à fait normal, l'apprentissage est une suite d'itérations.

Pour l'instant, retiens juste deux choses :
1. React t'évite d'écrire du code spaghetti pour mettre à jour ton site.
2. Le Virtual DOM travaille pour toi en coulisses en ne modifiant que ce qui change réellement.

Fais une petite pause, souffle un coup, et quand tu es prêt, on se retrouve au prochain chapitre pour forger nos premiers composants avec le JSX !

Verifie tes acquis

3 questions pour valider ce chapitre

1. Quel probleme principal React resout-il par rapport au JavaScript Vanilla ?

Valide et sauvegarde ce chapitre

Ne perds pas le fil de ton apprentissage. Chaque QCM complété s'enregistre comme un checkpoint dans ton tableau de bord personnel. Crée ton profil de développeur gratuitement pour débloquer toutes les évaluations du site et suivre ta progression étape par étape.

Commencer l'aventure
Déjà membre ?Connecte-toi