Passer au contenu principal

⚛️ Qu'est-ce que React ?

📖 Définition

React est une bibliothèque JavaScript pour créer des interfaces utilisateur développée par Facebook (Meta). Elle utilise une architecture basée sur les composants pour une interface utilisateur réutilisable et le Virtual DOM pour des mises à jour d'écran efficaces. La programmation déclarative simplifie la gestion d'interfaces utilisateur complexes.

🎯 Analogie simple

Blocs LEGO

Composants React = Blocs LEGO
├─ Combiner de petits blocs
├─ Réutiliser les mêmes blocs plusieurs fois
├─ Construire facilement des structures complexes
└─ Remplacer des blocs individuels selon les besoins

<House>
<Roof />
<Wall />
<Door />
<Window />
</House>

⚙️ Concepts de base

Structure de composant

// Composant fonctionnel (approche moderne)
function Welcome({ name }) {
return <h1>Bonjour, {name} !</h1>;
}

// Utilisation
<Welcome name="Pierre" />

Gestion d'état

import { useState } from 'react';

function Counter() {
const [count, setCount] = useState(0);

return (
<div>
<p>Compteur : {count}</p>
<button onClick={() => setCount(count + 1)}>
Incrémenter
</button>
</div>
);
}

Hook useEffect

import { useState, useEffect } from 'react';

function UserProfile({ userId }) {
const [user, setUser] = useState(null);

useEffect(() => {
fetch(`/api/users/${userId}`)
.then(res => res.json())
.then(data => setUser(data));
}, [userId]); // Exécuter quand userId change

return <div>{user?.name}</div>;
}

💡 Exemples clés

Rendu de listes

function TodoList() {
const [todos, setTodos] = useState([
{ id: 1, text: 'Sport', done: false },
{ id: 2, text: 'Étudier', done: true }
]);

return (
<ul>
{todos.map(todo => (
<li key={todo.id}>
{todo.text}
</li>
))}
</ul>
);
}

Gestion de formulaires

function LoginForm() {
const [formData, setFormData] = useState({
username: '',
password: ''
});

const handleChange = (e) => {
setFormData({
...formData,
[e.target.name]: e.target.value
});
};

const handleSubmit = (e) => {
e.preventDefault();
// Appel API...
};

return (
<form onSubmit={handleSubmit}>
<input name="username" onChange={handleChange} />
<input name="password" type="password" onChange={handleChange} />
<button type="submit">Se connecter</button>
</form>
);
}

🤔 Questions fréquentes

Q1. Pourquoi utiliser React ?

// ❌ Vanilla JS (complexe)
const button = document.createElement('button');
button.addEventListener('click', () => {
// Manipulation manuelle du DOM
});

// ✅ React (simple)
function Counter() {
const [count, setCount] = useState(0);
return <button onClick={() => setCount(count + 1)}>{count}</button>;
}

Q2. Qu'est-ce que JSX ?

R: Syntaxe JavaScript + XML pour les éléments React :

// JSX
const element = <h1 className="title">Bonjour</h1>;

// Converti en
React.createElement('h1', { className: 'title' }, 'Bonjour');

Q3. Qu'est-ce que les Hooks ?

R: Fonctions permettant d'utiliser l'état et le cycle de vie dans les composants fonctionnels :

useState    // Gestion d'état
useEffect // Effets secondaires (appels API)
useContext // Accès au contexte
useRef // Accès au DOM
useMemo // Mémoïsation
useCallback // Mémoïsation de fonctions

🎬 Résumé

  • Composants: Blocs d'interface utilisateur réutilisables
  • Virtual DOM: Mises à jour efficaces
  • JSX: Syntaxe intuitive
  • Hooks: Composants fonctionnels puissants

Construisez des applications interactives avec React ! ⚛️