
React.js : Le guide de référence
Devenez expert React.js ! Ce guide complet couvre tout : bases, hooks avancés, state management (Redux, Zustand), routage, tests, optimisation, Next.js, TypeScript et déploiement. Pour tous niveaux.
Table des matières
- Les Fondamentaux de React
- Introduction à React.js
- Qu'est-ce que React ? (Bibliothèque vs framework)
- Philosophie et avantages de React (Déclaratif, basé sur les composants, apprendre une fois, écrire partout)
- Le DOM virtuel (Virtual DOM) : Concept et fonctionnement
- React vs autres frameworks/bibliothèques (Angular, Vue.js, Svelte)
- L'écosystème React (React Native, Next.js, Gatsby, etc.)
- Mise en place de l'environnement de développement
- JSX - Syntaxe JavaScript étendue
- Les composants React : Blocs de construction fondamentaux
- Props - Passage de données aux composants
- Introduction aux props (Propriétés)
- Passer des props d'un parent à un enfant
- Lecture des props dans les composants fonctionnels et classe
- `props.children` : Passer des éléments enfants
- Props par défaut (Default Props)
- PropTypes : Validation des types de props (Importance et utilisation)
- Déstructuration des props
- State - Gestion de l'état local d'un composant
- Introduction au concept d'état (State)
- Le hook `useState` : Introduction et utilisation
- Déclaration d'une variable d'état
- Lecture de l'état
- Mise à jour de l'état (Fonction de mise à jour)
- Mise à jour basée sur l'état précédent
- L'état dans les composants classe (`this.state`, `this.setState`) - Comparaison
- Quand utiliser le state vs les props ?
- Lifting state up (Remonter l'état) : Partage d'état entre composants
- Gestion des événements
- Ecouteurs d'événements en JSX (onClick, onChange, onSubmit...)
- Gestionnaires d'événements (Event handlers)
- L'objet événement synthétique de React
- Passer des arguments aux gestionnaires d'événements
- Liaison (`bind`) et fonctions fléchées dans les composants classe (Contexte `this`) - Pertinence historique
- Rendu conditionnel
- Listes et clés (Keys)
- Formulaires
- Composants contrôlés (Controlled components) : Liaison état et input
- Gestion des différents types d'inputs (text, textarea, select, checkbox, radio)
- Gestion de la soumission de formulaire (`onSubmit`)
- Validation de base des formulaires
- Composants non contrôlés (Uncontrolled components) et `useRef` (Alternative)
- Bibliothèques de gestion de formulaires (React Hook Form, Formik - Aperçu)
- Introduction à React.js
- Maîtrise des Hooks
- `useState` - Revisité et cas avancés
- `useEffect` - Effets de bord
- Introduction aux effets de bord (Data fetching, subscriptions, timers, mutations manuelles du DOM)
- Utilisation de `useEffect` pour exécuter du code après le rendu
- Le tableau des dépendances : Contrôler l'exécution de l'effet
- Fonction de nettoyage (Cleanup function) : Prévenir les fuites mémoire
- `useEffect` sans dépendances (montage/démontage et mises à jour)
- `useEffect` avec dépendances vides (`[]`) (montage uniquement)
- `useEffect` avec dépendances spécifiques
- Pièges courants avec `useEffect` (dépendances manquantes, boucles infinies)
- `useContext` - Partage d'état global simplifié
- Le problème du "prop drilling"
- Introduction à l'API Context (React.createContext, Provider, Consumer)
- Le hook `useContext` : Consommer le contexte facilement
- Structurer les Providers
- Mises à jour du contexte et optimisation (séparation des contextes)
- Quand utiliser Context vs state local vs state management externe ?
- `useRef` - Accès aux éléments DOM et valeurs persistantes
- `useReducer` - Gestion d'état complexe
- Les hooks personnalisés (Custom Hooks)
- Règles des hooks et linters
- Structuration d'Applications et Interactions
- Styles et CSS dans React
- CSS classique (`className`) et feuilles de style globales/locales
- CSS Modules : Styles scopés localement
- CSS-in-JS : Styled Components, Emotion (Principes et exemples)
- Frameworks CSS utility-first (Tailwind CSS) : Intégration et avantages
- Styles en ligne (Inline styles) : Quand et comment ?
- Utilisation de préprocesseurs CSS (Sass/SCSS, Less)
- Routage côté client avec React Router
- Introduction au routage SPA (Single Page Application)
- Installation et configuration de React Router DOM (`BrowserRouter`, `Routes`, `Route`)
- Création de liens (`Link`, `NavLink`)
- Routes dynamiques et paramètres d'URL (`useParams`)
- Routes imbriquées (`Outlet`)
- Redirections (`Navigate`)
- Navigation programmatique (`useNavigate`)
- Routes protégées (Authentification)
- Gestion du "Not Found" (404)
- Paramètres de recherche (`useSearchParams`) et état de localisation (`useLocation`)
- Gestion d'état globale avancée
- Limites de `useState` et `useContext` pour les grandes applications
- Introduction aux bibliothèques de gestion d'état dédiées
- Redux : Concepts clés (Store, Actions, Reducers, Dispatch, Middleware - Thunk/Saga)
- Mise en place avec React Redux (`Provider`, `useSelector`, `useDispatch`)
- Redux Toolkit : L'approche moderne et simplifiée
- Zustand : Approche minimaliste basée sur les hooks
- MobX, Recoil, Jotai (Aperçu des alternatives et de leurs philosophies)
- Choisir la bonne stratégie de gestion d'état pour votre projet
- Communication avec les API (Data fetching)
- Utilisation de `fetch` ou `axios` dans `useEffect`
- Gestion des états de chargement (Loading), succès (Success) et erreur (Error)
- Annulation des requêtes (AbortController)
- Bibliothèques dédiées au data fetching :
- SWR (Stale-While-Revalidate)
- React Query (TanStack Query) : Caching, synchronisation, mises à jour en arrière-plan
- Gestion des requêtes POST, PUT, DELETE
- Authentification et en-têtes (Headers)
- Gestion des erreurs d'API
- Styles et CSS dans React
- Optimisation et Patterns Avancés
- Optimisation des performances de rendu
- Comprendre le processus de rendu et de réconciliation de React
- Outils de profiling React (React DevTools Profiler)
- `React.memo` : Mémoïsation des composants fonctionnels
- `useMemo` : Mémoïsation des valeurs calculées
- `useCallback` : Mémoïsation des fonctions callback
- Quand et comment utiliser `memo`, `useMemo`, `useCallback` (Eviter l'optimisation prématurée)
- Virtualisation des listes longues (react-window, react-virtualized)
- Code splitting (Découpage du code)
- Gestion des erreurs (Error Boundaries)
- Introduction aux Error Boundaries (Composants classe uniquement pour la capture)
- Implémentation d'un Error Boundary (`componentDidCatch`, `getDerivedStateFromError`)
- Placement stratégique des Error Boundaries
- Utilisation avec des bibliothèques (ex: `react-error-boundary`) pour une approche Hooks-friendly
- Accessibilité (a11y)
- Portails (Portals)
- Patterns de composition avancés
- Optimisation des performances de rendu
- Tests et Qualité du Code
- Introduction aux tests dans React
- Tests unitaires et d'intégration avec Jest et React Testing Library (RTL)
- Configuration de l'environnement de test
- Philosophie de RTL : Tester comme un utilisateur
- Rendu de composants (`render`)
- Requêtes de sélection (Queries : getBy, findBy, queryBy...)
- Simulation d'événements utilisateur (`user-event`)
- Assertions avec Jest (`expect`)
- Tests de composants simples et complexes
- Tests de hooks personnalisés (`renderHook`)
- Mocking de modules et de fonctions (Appels API, etc.)
- Tests asynchrones
- Tests de contexte et de routage
- Tests end-to-end (E2E)
- Qualité du code et bonnes pratiques
- Ecosystème et outils complémentaires
- Frameworks meta basés sur React
- Next.js : Rendu côté serveur (SSR), génération de site statique (SSG), routage basé sur les fichiers, API Routes, optimisation d'images...
- Remix : Focus sur les fondamentaux du web, SSR/SSG, gestion des formulaires, routage imbriqué puissant.
- Gatsby : Générateur de site statique puissant (focus sur la performance et les sources de données via GraphQL).
- Quand utiliser un framework meta vs CRA/Vite ?
- React Native (Aperçu)
- Utiliser TypeScript avec React
- Introduction à TypeScript et ses avantages (Typage statique)
- Configuration d'un projet React avec TypeScript
- Typer les composants fonctionnels (`React.FC`) et les props (`interface`, `type`)
- Typer le state (`useState
`) - Typer les événements
- Typer les refs (`useRef
`) - Typer le Context (`createContext
`) - Typer les hooks personnalisés
- Utilisation de types provenant de bibliothèques tierces (`@types/...`)
- Server Components (Concept)
- Frameworks meta basés sur React
- Mise en Production et Suivi
- Projet Pratique et Conclusion