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/6/fr/part6a.md
+72Lines changed: 72 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -39,6 +39,78 @@ Créez une nouvelle application Vite et installez </i>redux</i> avec la commande
39
39
npm install redux
40
40
```
41
41
42
+
Comme dans Flux, dans Redux, l'état est également stocké dans un [store](https://redux.js.org/basics/store).
43
+
44
+
L'ensemble de l'état de l'application est stocké dans <i>un</i> objet JavaScript dans le store. Étant donné que notre application n'a besoin que de la valeur du compteur, nous la sauvegarderons directement dans le store. Si l'état était plus compliqué, différentes choses dans l'état seraient sauvegardées comme champs séparés de l'objet.
45
+
46
+
L'état du store est modifié avec des [actions](https://redux.js.org/basics/actions). Les actions sont des objets, qui ont au moins un champ déterminant le <i>type</i> de l'action.
47
+
Notre application a besoin par exemple de l'action suivante:
48
+
49
+
```js
50
+
{
51
+
type:'INCREMENT'
52
+
}
53
+
```
54
+
55
+
Si l'action implique des données, d'autres champs peuvent être déclarés selon les besoins. Cependant, notre application de comptage est si simple que les actions sont suffisantes avec juste le champ de type.
56
+
57
+
L'impact de l'action sur l'état de l'application est défini à l'aide d'un [reducer](https://redux.js.org/basics/reducers). En pratique, un réducteur est une fonction à laquelle sont donnés l'état actuel et une action comme paramètres. Elle <i>retourne</i> un nouvel état.
58
+
59
+
Définissons maintenant un réducteur pour notre application:
60
+
61
+
```js
62
+
constcounterReducer= (state, action) => {
63
+
if (action.type==='INCREMENT') {
64
+
return state +1
65
+
} elseif (action.type==='DECREMENT') {
66
+
return state -1
67
+
} elseif (action.type==='ZERO') {
68
+
return0
69
+
}
70
+
71
+
return state
72
+
}
73
+
```
74
+
75
+
Le premier paramètre est l'<i>état</i> dans le store. Le réducteur retourne un <i>nouvel état</i> basé sur le type de _l'action_. Ainsi, par exemple, lorsque le type de l'Action est <i>INCREMENT</i>, l'état obtient l'ancienne valeur plus un. Si le type de l'Action est <i>ZERO</i>, la nouvelle valeur de l'état est zéro.
76
+
77
+
Changeons un peu le code. Nous avons utilisé des instructions if-else pour répondre à une action et changer l'état. Cependant, l'instruction [switch](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch) est l'approche la plus courante pour écrire un réducteur.
78
+
79
+
Définissons également une [valeur par défaut](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters) de 0 pour le paramètre <i>état</i>. Maintenant, le réducteur fonctionne même si l'état du store n'a pas encore été initialisé.
80
+
81
+
```js
82
+
// highlight-start
83
+
constcounterReducer= (state=0, action) => {
84
+
// highlight-end
85
+
switch (action.type) {
86
+
case'INCREMENT':
87
+
return state +1
88
+
case'DECREMENT':
89
+
return state -1
90
+
case'ZERO':
91
+
return0
92
+
default: // if none of the above matches, code comes here
93
+
return state
94
+
}
95
+
}
96
+
```
97
+
98
+
Reducer n'est jamais supposé être appelé directement depuis le code de l'application. Reducer est uniquement donné en paramètre à la fonction _createStore_ qui crée le store:
0 commit comments