Introduction à React
Ce dépôt contient le code utilisé en exemple dans le cours https://www.fil.univ-lille.fr/~routier/enseignement/licence/js-s4/html/react.html et https://www.fil.univ-lille.fr/~routier/enseignement/licence/js-s4/html/react-2.html.
Plusieurs versions progressives du dépôt pour accompagner le cours.
Mise en place
- récupérer le dépôt
- installer les paquets Node.js :
$ npm install
- démarrer le serveur de développement de Webpack
$ npm run dev-server
Les versions
Il faut charger une version avec
$ git checkout **tag**
où tag peut prendre comme valeur :
-
v0: premier exemple basique avec React
voir/src/scripts/main.jset le point d'insertion#insertReactHeredans/src/index.html -
v0.5: second exemple avec création d'un emboitement d'éléments -
v1: premier exemple avec la syntaxe JSX -
v2: premiers composants sans état voir/src/components/first.jsx,/src/components/second.jsxet son utilisation dans/src/mains.js -
v3: utilisation des propriétés
voir/src/components/person.jsx,/src/components/personListing.jsxet son utilisation dans/src/mains.js -
v3.1: utilisation de la syntaxe de pattern matching sur les objets pour destructurer l'objetpropsdans le paramètre du constructeur du composant. -
v3.2: la propriétéchildren -
v4: définition des composants à l'aide de classes
voir/src/components/person_class.jsx,/src/components/personListing_class.jsxet son utilisation dans/src/mains.js -
v4.5: définitions locales et valeurs par défaut
voir/src/components/person.jsxet son utilisation dans/src/mains.js -
v4.6-problem: génération d'une liste de composants, à l'aide demap()
voir/src/components/personListing.jsx
/!\ mais cette version pose problème car il manque la gestion de la propriétékey: voir dans la console -
v4.6: génération d'une liste de composants avec gestion de la propriétékey -
v5: premier composant à état
voir/src/components/person.jsx -
v5.1: gestion d'événements
voir/src/components/star.jsxetonClick -
v5.2: modification et état courant : mise en évidence du problème
voir/src/components/star.jsx -
v5.3: modification et état courant : utilisation d'une fonction en argument desetOnpour modifier l'état à partir de la valeur précédente
voir/src/components/star.jsx(et/src/components/person.component.jsx) -
v5.5: cycle de vie du composant : utilisation du hookuseEffectpour agir au moment de la création du composant : juste après le premier rendu.
voir/src/components/personListing.component.jsxainsi que/src/components/person.component.jsx -
v 5.6: utilisation des dépendances du hookuseEffectpour déclencher son effet
voir/src/components/person.component.jsx -
v5.7: utilisation du hookuseRefet complément dépendances deuseEffect
voir/src/components/person.component.jsx -
v5.8: mise en oeuvre de la fonction de nettoyage duuseEffect
voir/src/components/person.component.jsx -
v5.9: mise en oeuvre de la fonction de nettoyage duuseEffect, appel à chaque exécution du hook
voir/src/components/person.component.jsx -
v6: il faut remonter l'état et inversion du flux
voir/src/components/delayButton.component.jsxet/src/components/personListingController.component.jsx -
v6.1: restructuration des composants, suite de "placer l'état au plus haut" et de l'inversion du flux
voir/src/components/personListingControls.component.jsxet/src/components/personListingController.component.jsx
Faire git checkout main pour revenir à la version finale.