Découvrez l’univers de React avec ce support incontournable destiné aux développeurs qui offre une approche pédagogique progressive et concrète pour se familiariser avec cette puissante bibliothèque JavaScript dédiée à la création d’interfaces utilisateur dynamiques et interactives. Une solide base en HTML, CSS et JavaScript facilitera la lecture de ce livre. Chaque chapitre est enrichi de conseils pratiques, d’exercices stimulants et d’études de cas réelles pour une compréhension approfondie...
Découvrez l’univers de React avec ce support incontournable destiné aux développeurs qui offre une approche pédagogique progressive et concrète pour se familiariser avec cette puissante bibliothèque JavaScript dédiée à la création d’interfaces utilisateur dynamiques et interactives.
Une solide base en HTML, CSS et JavaScript facilitera la lecture de ce livre. Chaque chapitre est enrichi de conseils pratiques, d’exercices stimulants et d’études de cas réelles pour une compréhension approfondie des concepts fondamentaux de React.
Vous débuterez en explorant les bases essentielles de JavaScript pour rapidement créer vos premiers composants React et en maîtriser les concepts incontournables. Une fois les outils de développement installés, vous découvrirez le JSX, les props, les hooks, l’état local, les formulaires et bien d’autres concepts clés. Vous serez également guidé dans l’exploitation de l’écosystème React et explorerez la gestion du state avec Redux et celle du cache avec React Query.
Vous apprendrez à développer pour le mobile avec React Native en exploitant des fonctionnalités avancées permettant notamment d’intégrer des éléments tels que la géolocalisation et la gestion des contacts. Pour une expérience utilisateur optimale, l’auteur vous guidera dans l’utilisation de Storybook, ainsi que dans la connexion à une API GraphQL pour des requêtes efficaces.
Les design patterns, fréquemment utilisés en React, ainsi que les tests unitaires seront également explorés en profondeur, vous offrant les compétences nécessaires pour concevoir des applications robustes et fiables.
b. Réactivité : mise à jourefficace de l’interface utilisateur
c. Composition : assemblage de composants réutilisables
d. Une approche déclarative
3. La communauté React
a. Projets open source
b. Contributeurs engagés
c. Événements et conférences
4. Versions de React et cycle de mise à jour
a. Les différentes versions de React
b. Changements majeurs et améliorations
c. Suivre les nouvelles versions
Structure du livre
1. Découverte de React
2. Gestion de l’état dans React
3. Développement mobile avec React Native
4. Aller plus loin avec React
Bien démarrer avec React
Notions essentielles de JavaScript
1. Le DOM (Document Object Model)
2. Définir une variable en JavaScript
3. Les types de valeurs
4. Chaînes de caractères
5. Tableaux
6. Objets
7. Classes
8. Fonctions fléchées
a. Syntaxe des fonctions fléchées
b. Comparaison entre une fonction traditionnelle et unefonction fléchée
c. Utilisation des fonctions fléchéesdans React
9. Asynchronisme
a. Callbacks
b. Promesses (Promises)
c. Async/Await
Prérequis, concepts et outils pour développer
1. Installation des outils nécessaires
a. NodeJS
b. Éditeur
c. Navigateur web et outils de développement
Une application basique
1. Le minimum de code pour une application React
2. Les composants React
Environnement de développement
1. Introduction au JSX
2. Initialisation d’un projet avec Vite
3. Mise en place de Prettier dans VSCode
4. Configuration d’ESLint
5. Conclusion
Découvrir le JSX
Introduction au JSX
Syntaxe et éléments JSX
1. Éléments JSX
2. Attributs JSX
a. Attributs booléens
b. Attributs personnalisés
3. Éléments React et fragments
4. Commentaires JSX
5. Utilisation de JavaScript dans le JSX
Construire une interface avec des composants
1. Composition
2. Isolation des fonctionnalités
3. Profondeur de la composition
4. Bonnes pratiques
a. Découpage en composants réutilisables
b. Profondeur de composition raisonnable
c. Respect du principe de responsabilité unique
Les fragments JSX
1. Utilisation des fragments JSX
2. Fragment explicite
Expressions conditionnelles
1. L’opérateur ternaire
2. L’instruction if
Utiliser les listes et les clés
1. Les clés des éléments deliste
a. Pourquoi les clés sont-elles importantes ?
b. Comment attribuer des clés ?
2. Utiliser une liste
3. Les clés et les performances
Les fondamentaux de React
Les composants
1. Introduction aux composants
a. Types de composants
b. Créer un composant
c. Importer un composant
2. Utilisation des props
a. Passer des props à un composant
b. Utilisation des props dans le composant enfant
3. Différences entre composants fonctionnelset de classe
4. Cycle de vie des composants de classe
5. Composants contrôlés et non contrôlés
a. Composants contrôlés
b. Composants non contrôlés
c. Quand utiliser chaque approche ?
6. Composants à état (stateful) etsans état (stateless)
a. Composants à état
b. Composants sans état
c. Quand utiliser chaque type de composant ?
7. Composition et hiérarchie des composants
Les props et l'état local
1. Introduction aux props et à l’étatlocal
a. Props
b. Le state
2. Utilisation des props
a. Passer des données de parent à enfant
b. Utiliser des props par défaut
3. L’état local
a. Utilisation du hook useState pour gérer l’étatlocal
b. Modifier l’état local avec setState (pourles composants de classe)
c. Comparaison entre props et état local
Les hooks
1. Introduction aux hooks
2. Les problèmes avec les composants de classe
3. Les principaux hooks intégrés
a. useState
b. useEffect
c. useContext
d. useReducer
e. useCallback
f. useMemo
g. useRef
h. useImperativeHandle
i. useLayoutEffect
j. useDebugValue
4. Création de vos propres hooks
5. Bonnes pratiques pour l’utilisation des hooks
a. Respecter l’ordre des hooks et ne pas les appelerconditionnellement
b. Diviser les responsabilités des hooks pour éviterla complexité
6. Limitations des hooks
Le style
1. Introduction au style en React
a. Utilisation des styles en ligne (Inline Styles)
b. Utilisation de classes CSS
c. Utilisation de modules CSS
d. Utilisation de bibliothèques de styles (ex.Bootstrap, Material-UI)
2. Tailwind
3. La gestion des classes conditionnelles
4. Les animations et transitions
Le routage
1. Introduction au routage en React
a. Comprendre le concept de routage dans une applicationweb
b. React Router
2. Utilisation des paramètres de l’URL (URLParameters)
Les formulaires
1. Utilisation des formulaires contrôlés
a. Gestion de l’état du formulaire avec useState
b. Validation des champs du formulaire
c. Soumission du formulaire
2. Utilisation des formulaires non contrôlés
a. Définition des formulaires non contrôlés
b. Gestion des données du formulaire avec lesréférences (refs)
c. Accès aux valeurs du formulaire soumises
3. Utilisation des composants de formulaire
a. Présentation de Formik
b. Installation et configuration de Formik
c. Création d’un formulaire avec Formik
d. Validation des champs avec Formik
4. Les champs de formulaire avancés
a. Champ de sélection (select)
b. Cases à cocher (checkbox) et boutons radio(radio button)
c. Champ de fichier (file input)
d. Champs de date (date picker)
5. La validation des formulaires
6. React-hook-form, l’alternative à Formik
7. La gestion des formulaires complexes
a. Formulaires avec champs dépendants
b. Formulaires avec étapes
c. Formulaires avec listes dynamiques (ajout/suppressionde champs)
Optimiser les performances d'une application
1. Comprendre les enjeux de performance
a. Réactivité de l’interface utilisateur
b. Vitesse de chargement initial
c. Gestion de l’état
d. Rendu non nécessaire
e. Gestion des requêtes et des données
f. Rendu conditionnel
2. Mise en cache et mémoïsation
3. Lazy loading et Suspense
4. Virtualisation
5. Code splitting
6. Analyse des performances
7. Test de performance
Gestion du state
Introduction
Les différentes solutions
1. L’état serveur (server state) et l’étatclient (client state)
2. Le Context API
3. Redux
4. MobX
5. Recoil
6. Zustand
L'association du contexte et des hooks
1. Création d’un contexte
2. Utilisation de Context avec le hook useContext
3. Utilisation de useReducer pour des étatsplus complexes
Redux
1. Les éléments-clés de Redux
a. Actions
b. Réducteur (reducer)
c. Store
d. Redux Toolkit
2. Création d’un store
3. Utiliser createSlice
4. Asynchronisme avec createAsyncThunk
5. Testabilité
MobX
1. Principes de base de MobX
a. Observables
b. Actions
c. Réactions
d. Computed values
2. MobX avec React
3. Conclusion
Gestion du state serveur avec React Query
Introduction
Installation
1. Installer les dépendances
2. Mise en place du provider
Requêtes (queries)
1. La fonction de fetch
2. Utilisation de useQuery
Mutations
Invalidation
1. Différents moyens d’invalider une requête
2. Autres moyens d’invalidation
3. Invalidations conditionnelles
Utiliser les outils de développement dédiés
Développer pour le mobile avec React Native
Introduction
Présentation de React Native
1. Composants natifs
2. Réutilisation de la logique
3. Accès aux fonctionnalités du périphérique
Créer une application avec Expo
1. L’outil create-expo-app
2. L’application Expo Go
Mettre en place la navigation
1. Installer les dépendances et configurer leprojet
2. Le répertoire app
3. Naviguer entre les écrans
Ajouter du style
1. Utilisation de styles en ligne
2. Utilisation de styles externes
3. Styles conditionnels
4. Utiliser Tailwind
Fonctionnalités avancées avec React Native
Introduction
Utiliser la géolocalisation et accéder aux contacts
1. Utiliser la géolocalisation
a. Installer le module de géolocalisation
b. Utilisation de la géolocalisation
2. Accéder aux contacts
a. Installer le module de contacts
b. Utilisation de l’accès aux contacts
Exemple : utiliser un thème clair ou sombre avec l'API Context
Conclusion
Next.js, le framework React par Vercel
Introduction
1. Pourquoi Next.js ?
a. Rendu côté serveur (SSR) et générationde site statique (SSG)
b. Routage simple et intuitif
c. Préchargement des pages
d. Optimisation des images
e. Support CSS-in-JS et SCSS
Création d'un site avec Next.js
1. Création d’un projet Next.js
2. Création de pages
3. Lancement de l’application
Naviguer entre les pages
1. Utilisation du composant Link
2. Route dynamique
3. Naviguer avec useRouter
4. Navigation programmative
Gestion des assets
1. Dossiers publics
2. Chargement des images
Utiliser SWR, l'équivalent de React Query
1. Installation de SWR
2. Utilisation de SWR
3. Options de configuration avancées
Rendu côté serveur et génération de site statique
1. Rendu côté serveur (SSR)
2. Génération de site statique (SSG)
3. Rafraîchissement automatique (ISR)
Présentation des React Server Components (RSC)
Introduction à Storybook
Découverte et installation
1. Qu’est-ce que Storybook ?
2. Installation de Storybook
3. Création de stories
4. Lancement de Storybook
5. Ce qu’offre Storybook
Création d'un composant
1. Création d’un composant
2. Visualisation et test du composant
3. L’utilité de la création de composantsdans Storybook
Utiliser des stories
1. Visualisation et test de la story
2. Avantages de la création de stories
Utiliser des add-ons
1. Installation d’add-ons
2. Utilisation d’add-ons
3. Ce qu’offre l’utilisation d’add-ons
Conclusion
Connecter React à une API GraphQL
Présentation de GraphQL et premières requêtes
1. Qu’est-ce que GraphQL ?
2. Premières requêtes GraphQL avecReact
Création d’une API avec Hasura
Appel d’une API avec React et Apollo Client
1. Configuration d’Apollo Client
2. Appel de l’API créée avec Hasura
Conclusion
Maîtriser les design patterns React
Introduction
Higher-Order Components
1. Fonctionnement des Higher-Order Components
2. Ce qu’offrent les Higher-Order Components
3. Cas d’utilisation des Higher-Order Components
4. Limitations et considérations
a. Les HOC en cascade
b. Conflit de props
Render props
1. Fonctionnement des render props
2. Qualités des render props
3. Cas d’utilisation des render props
a. Contrôle de composants interactifs
b. Gestion des états ou des données
4. Limitations et considérations
Provider
1. Fonctionnement du Provider Pattern
2. Avantages du Provider Pattern
3. Cas d’utilisation du Provider Pattern
4. Limitations et considérations
Composants container et de présentation
1. Composants container
2. Composants de présentation
3. Ce qu’offrent les composants container et de présentation
4. Cas d’utilisation des composants container et de présentation
5. Limitations et considérations
Hooks
1. Les bases du pattern Hooks
2. Hooks personnalisés
3. Extraction de logique
Tester une application React
Utiliser Jest et React Testing Library
1. Introduction à Jest
2. Installation de Jest
3. Écriture de tests avec Jest et React TestingLibrary
4. Exécution des tests
5. Jest et React Testing Library
6. Limitations et considérations
Écrire son premier test
1. Configuration de base
2. Écriture de votre premier test
3. Explication du test
4. Exécution du test
5. Pourquoi ce test simple ?
6. Limitations et considérations
Tester les composants avec Cypress
1. Configuration de base
2. Installation de Cypress
3. Écriture de tests avec Cypress
4. Exécution des tests
5. Ce qu’offre Cypress
6. Limitations et considérations
7. Playwright, l’alternative à Cypress
Conclusion
1. L’importance des tests
2. Choix de la méthode de test
3. Bonnes pratiques de test
4. Intégration et déploiement continus
5. Évolution des tests
Conclusion
Aller plus loin
1. Explorer des domaines connexes
2. Contribuer à la communauté
3. Créer des projets personnels
4. Participer à des événementset des conférences
5. Expérimenter avec de nouvelles technologies
Déployer avec Netlify
1. Création d’un projet et build
2. Création d’un compte Netlify
3. Configuration de déploiement
4. Déploiement
Utiliser une bibliothèque de composants
1. Pourquoi utiliser une bibliothèque de composants ?
2. Exemples de bibliothèques de composants
3. Limitations
Ressources pour aller plus loin
1. Documentation officielle
2. Blogs
3. Veille technologique
Hakim MADANI
Aujourd’hui Développeur Front-end chez la Société Générale, Hakim Madani a plus de 10 ans d'expérience dans le développement Front End au sein de grandes entreprises. Il s'est spécialisé et a acquis une solide expertise autour de React. Tout au long de sa carrière, il a collaboré sur une multitude de projets, aidant ainsi des startups, PME et grandes structures à réaliser leurs produits numériques. Aujourd'hui, désireux de partager son savoir et d'accompagner d'autres développeurs dans leur parcours, il fait profiter le lecteur de toute son expertise sur React.