You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/content/1/fr/part1d.md
+14-63Lines changed: 14 additions & 63 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,50 +7,6 @@ lang: fr
7
7
8
8
<divclass="content">
9
9
10
-
### Une note sur la version React
11
-
12
-
La version 18 de React est sortie fin mars 2022. Le code du matériel devrait fonctionner tel qu'il est avec la nouvelle version de React. Cependant, certaines bibliothèques peuvent ne pas encore être compatibles avec React 18. Au moment de la rédaction (4 avril), le client Apollo utilisé dans la [partie 8](/en/part8) ne fonctionne pas encore avec la version la plus récente de React.
13
-
14
-
Si vous vous retrouvez dans une situation où votre application tombe en panne en raison de problèmes de compatibilité de bibliothèque, <i>rétrogradez</i> vers l'ancien React en modifiant le fichier <i>package.json</i> comme suit :
15
-
16
-
```js
17
-
{
18
-
"dependencies": {
19
-
"react":"^17.0.2", // highlight-line
20
-
"react-dom":"^17.0.2", // highlight-line
21
-
"react-scripts":"5.0.0",
22
-
"web-vitals":"^2.1.4"
23
-
},
24
-
// ...
25
-
}
26
-
```
27
-
28
-
Une fois la modification effectuée, réinstallez les dépendances en exécutant
29
-
30
-
```js
31
-
npm install
32
-
```
33
-
34
-
Notez que le fichier <i>index.js</i> doit également être légèrement modifié. Pour React 17, cela ressemble à
Dans notre exemple précédent, l'état de l'application était simple car il était composé d'un seul entier. Et si notre application nécessite un état plus complexe ?
@@ -204,7 +160,7 @@ L'application semble fonctionner. Cependant, <i>il est interdit dans React de mu
204
160
205
161
Stocker tout l'état dans un seul objet d'état est un mauvais choix pour cette application particulière ; il n'y a aucun avantage apparent et l'application qui en résulte est beaucoup plus complexe. Dans ce cas, stocker les compteurs de clics dans des éléments d'état séparés est un choix bien plus approprié.
206
162
207
-
Il existe des situations où il peut être avantageux de stocker une partie de l'état de l'application dans une structure de données plus complexe. [La documentation officielle de React](https://reactjs.org/docs/hooks-faq.html#should-i-use-one-or-many-state-variables) contient des conseils utiles sur le sujet.
163
+
Il existe des situations où il peut être avantageux de stocker une partie de l'état de l'application dans une structure de données plus complexe. [La documentation officielle de React](https://react.dev/learn/choosing-the-state-structure) contient des conseils utiles sur le sujet.
208
164
209
165
### Gestion des tableaux
210
166
@@ -346,7 +302,7 @@ Et dans tous les autres cas, le composant restitue l'historique des clics :
346
302
347
303
Le composant <i>History</i> rend des éléments React complètement différents en fonction de l'état de l'application. C'est ce qu'on appelle le <i>rendu conditionnel</i>.
348
304
349
-
React propose également de nombreuses autres façons de faire [le rendu conditionnel](https://reactjs.org/docs/conditional-rendering.html). Nous y reviendrons plus en détail dans la [partie 2](/fr/part2).
305
+
React propose également de nombreuses autres façons de faire [le rendu conditionnel](https://react.dev/learn/conditional-rendering). Nous y reviendrons plus en détail dans la [partie 2](/fr/part2).
350
306
351
307
Apportons une dernière modification à notre application en la refactorisant pour utiliser le composant _Button_ que nous avons défini précédemment :
352
308
@@ -406,7 +362,7 @@ const App = () => {
406
362
407
363
### Ancienne version de React
408
364
409
-
Dans ce cours, nous utilisons le [state hook](https://reactjs.org/docs/hooks-state.html) pour ajouter un état à nos composants React, qui fait partie des nouvelles versions de React et est disponible à partir de la version [ 16.8.0](https://www.npmjs.com/package/react/v/16.8.0) et versions ultérieures. Avant l'ajout des hooks, il n'y avait aucun moyen d'ajouter un état aux composants fonctionnels. Les composants qui nécessitaient un état devaient être définis en tant que composants [classes](https://reactjs.org/docs/react-component.html), à l'aide de la syntaxe de classe JavaScript.
365
+
Dans ce cours, nous utilisons le [state hook](https://react.dev/learn/state-a-components-memory) pour ajouter un état à nos composants React, qui fait partie des nouvelles versions de React et est disponible à partir de la version [ 16.8.0](https://www.npmjs.com/package/react/v/16.8.0) et versions ultérieures. Avant l'ajout des hooks, il n'y avait aucun moyen d'ajouter un état aux composants fonctionnels. Les composants qui nécessitaient un état devaient être définis en tant que composants [classes](https://react.dev/reference/react/Component), à l'aide de la syntaxe de classe JavaScript.
410
366
411
367
Dans ce cours, nous avons pris la décision radicale d'utiliser exclusivement les hooks dès le premier jour, pour nous assurer que nous apprenons le style actuel et futur de React. Même si les composants fonctionnels sont l'avenir de React, il est toujours important d'apprendre la syntaxe de la classe, car il existe des milliards de lignes de code React que vous pourriez finir par maintenir un jour. Il en va de même pour la documentation et les exemples de React que vous pouvez trouver sur Internet.
412
368
@@ -588,10 +544,10 @@ Si nous devions définir notre event handler sous forme de chaîne :
588
544
React nous en avertirait dans la console :
589
545
590
546
```js
591
-
index.js:2178 Warning: Expected `onClick` listener to be a function, instead got a value of `string` type.
592
-
in button (atindex.js:20)
593
-
in div (at index.js:18)
594
-
in App (at index.js:27)
547
+
main.jsx:2178 Warning: Expected `onClick` listener to be a function, instead got a value of `string` type.
548
+
in button (atmain.jsx:20)
549
+
in div (at main.jsx:18)
550
+
in App (at main.jsx:27)
595
551
```
596
552
597
553
La tentative suivante ne fonctionnerait pas non plus :
@@ -603,7 +559,7 @@ La tentative suivante ne fonctionnerait pas non plus :
603
559
Nous avons tenté de définir le gestionnaire d'événements sur _value + 1_ qui renvoie simplement le résultat de l'opération. React nous en avertira gentiment dans la console :
604
560
605
561
```js
606
-
index.js:2178 Warning: Expected `onClick` listener to be a function, instead got a value of `number` type.
562
+
main.jsx:2178 Warning: Expected `onClick` listener to be a function, instead got a value of `number` type.
607
563
```
608
564
609
565
Cette tentative ne fonctionnerait pas non plus :
@@ -1057,7 +1013,7 @@ Internet regorge de contenu lié à React. Cependant, nous utilisons le nouveau
1057
1013
1058
1014
Les liens suivants peuvent vous être utiles :
1059
1015
1060
-
- La [documentation officielle de React](https://reactjs.org/docs/hello-world.html) vaut la peine d'être consultée à un moment donné, même si la plupart d'entre elles ne deviendront pertinentes que plus tard dans le cours. De plus, tout ce qui concerne les composants basés sur des classes ne nous concerne pas ;
1016
+
- La [documentation officielle de React](https://react.dev/learn) vaut la peine d'être consultée à un moment donné, même si la plupart d'entre elles ne deviendront pertinentes que plus tard dans le cours. De plus, tout ce qui concerne les composants basés sur des classes ne nous concerne pas ;
1061
1017
- Certains cours sur [Egghead.io](https://egghead.io) comme [Start learning React](https://egghead.io/courses/start-learning-react) sont de haute qualité, et récemment mis à jour [ Le guide du débutant pour réagir](https://egghead.io/courses/the-beginner-s-guide-to-reactjs) est également relativement bon ; les deux cours introduisent des concepts qui seront également introduits plus tard dans ce cours. **NB** Le premier utilise des composants classes mais le second utilise les nouveaux composants fonctionnels.
1062
1018
1063
1019
</div>
@@ -1072,11 +1028,9 @@ N'oubliez pas de soumettre **tous** les exercices d'une partie **en une seule so
1072
1028
1073
1029
<i>Certains des exercices fonctionnent sur la même application. Dans ces cas, il suffit de soumettre uniquement la version finale de la demande. Si vous le souhaitez, vous pouvez effectuer un commit après chaque exercice terminé, mais ce n'est pas obligatoire.</i>
1074
1030
1075
-
**ATTENTION** create-react-app transformera automatiquement votre projet en un référentiel git à moins que vous ne créiez votre application dans un référentiel git existant. **Il est fort probable que vous ne vouliez pas que chacun de vos projets soit un référentiel distinct**, il vous suffit donc d'exécuter la commande _rm -rf .git_ à la racine de votre application.
1076
-
1077
1031
Dans certaines situations, vous devrez peut-être également exécuter la commande ci-dessous à partir de la racine du projet :
1078
1032
1079
-
```
1033
+
```bash
1080
1034
rm -rf node_modules/ && npm i
1081
1035
```
1082
1036
@@ -1090,18 +1044,17 @@ L'application doit afficher le nombre total de commentaires recueillis pour chaq
1090
1044
1091
1045
Notez que votre application ne doit fonctionner que pendant une seule session de navigateur. Une fois que vous avez actualisé la page, les commentaires recueillis sont autorisés à disparaître.
1092
1046
1093
-
Il est conseillé d'utiliser la même structure que celle utilisée dans le matériel et l'exercice précédent. Le fichier <i>index.js</i> est le suivant :
1047
+
Il est conseillé d'utiliser la même structure que celle utilisée dans le matériel et l'exercice précédent. Le fichier <i>main.jsx</i> est le suivant :
Vous pouvez utiliser le code ci-dessous comme point de départ pour le fichier <i>App.js</i> :
1057
+
Vous pouvez utiliser le code ci-dessous comme point de départ pour le fichier <i>App.jsx</i> :
1105
1058
1106
1059
```js
1107
1060
import { useState } from'react'
@@ -1130,7 +1083,7 @@ Développez votre application pour qu'elle affiche plus de statistiques sur les
1130
1083
1131
1084
<h4>1.8 : unicafé, étape3</h4>
1132
1085
1133
-
Refactorisez votre application afin que l'affichage des statistiques soit extrait dans son propre composant <i>Statistiques</i>. L'état de l'application doit rester dans le composant racine <i>App</i>.
1086
+
Refactorisez votre application afin que l'affichage des statistiques soit extrait dans son propre composant <i>Statistics</i>. L'état de l'application doit rester dans le composant racine <i>App</i>.
1134
1087
1135
1088
N'oubliez pas que les composants ne doivent pas être définis à l'intérieur d'autres composants :
1136
1089
@@ -1236,16 +1189,14 @@ const App = () => {
1236
1189
exportdefaultApp
1237
1190
```
1238
1191
1239
-
Le contenu du fichier <i>index.js</i> est le même que dans les exercices précédents.
1192
+
Le contenu du fichier <i>main.jsx</i> est le même que dans les exercices précédents.
1240
1193
1241
1194
Découvrez comment générer des nombres aléatoires en JavaScript, par exemple. via le moteur de recherche ou sur [Mozilla Developer Network](https://developer.mozilla.org). N'oubliez pas que vous pouvez tester la génération de nombres aléatoires, par ex. directement dans la console de votre navigateur.
1242
1195
1243
1196
Votre application terminée pourrait ressembler à ceci :
1244
1197
1245
1198

1246
1199
1247
-
**ATTENTION** create-react-app transformera automatiquement votre projet en un référentiel git à moins que vous ne créiez votre application dans un référentiel git existant. **Il est fort probable que vous ne vouliez pas que chacun de vos projets soit un référentiel distinct**, il vous suffit donc d'exécuter la commande _rm -rf .git_ à la racine de votre application.
1248
-
1249
1200
<h4>1.13* : anecdotes, étape2</h4>
1250
1201
1251
1202
Développez votre application afin de pouvoir voter pour l'anecdote affichée.
0 commit comments