Skip to content

Commit ad43d8c

Browse files
committed
Translation part 6 b in french line 187
1 parent a98d212 commit ad43d8c

File tree

2 files changed

+117
-4
lines changed

2 files changed

+117
-4
lines changed

src/content/6/fr/part6a.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -899,7 +899,7 @@ const App = () => {
899899

900900
### Transmettre le Store Redux à divers composants
901901

902-
À part le réducteur, notre application est dans un seul fichier. Cela n'est bien sûr pas sensé, et nous devrions séparer <i>App</i> dans son propre module.
902+
À part le reducer, notre application est dans un seul fichier. Cela n'est bien sûr pas sensé, et nous devrions séparer <i>App</i> dans son propre module.
903903

904904
La question est maintenant, comment <i>App</i> peut-il accéder au store après le déménagement? Et plus largement, lorsqu'un composant est composé de nombreux petits composants, il doit y avoir un moyen pour tous les composants d'accéder au store.
905905
Il existe plusieurs façons de partager le store Redux avec les composants. D'abord, nous examinerons la manière la plus récente, et peut-être la plus facile, qui est d'utiliser l'API [hooks](https://react-redux.js.org/api/hooks) de la bibliothèque [react-redux](https://react-redux.js.org/).
@@ -935,7 +935,7 @@ ReactDOM.createRoot(document.getElementById('root')).render(
935935
Notez que l'application est maintenant définie comme un enfant d'un composant [Provider](https://react-redux.js.org/api/provider) fourni par la bibliothèque react-redux.
936936
Le store de l'application est donné au Provider en tant qu'attribut <i>store</i>.
937937

938-
La définition des créateurs d'actions a été déplacée dans le fichier <i>reducers/noteReducer.js</i> où le réducteur est défini. Ce fichier ressemble à ceci:
938+
La définition des créateurs d'actions a été déplacée dans le fichier <i>reducers/noteReducer.js</i> où le reducer est défini. Ce fichier ressemble à ceci:
939939

940940
```js
941941
const noteReducer = (state = [], action) => {
@@ -970,7 +970,7 @@ Si l'application a de nombreux composants qui ont besoin du store, le composant
970970

971971
Le module a maintenant plusieurs commandes [export](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export).
972972

973-
La fonction réducteur est toujours retournée avec la commande <i>export default</i>, donc le réducteur peut être importé de la manière habituelle:
973+
La fonction reducer est toujours retournée avec la commande <i>export default</i>, donc le reducer peut être importé de la manière habituelle:
974974

975975
```js
976976
import noteReducer from './reducers/noteReducer'

src/content/6/fr/part6b.md

Lines changed: 114 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ lang: fr
99

1010
Continuons notre travail avec la [version simplifiée Redux](/en/part6/flux_architecture_and_redux#redux-notes) de notre application de notes.
1111

12-
Pour faciliter notre développement, modifions notre réducteur afin que le store soit initialisé avec un état contenant quelques notes:
12+
Pour faciliter notre développement, modifions notre reducer afin que le store soit initialisé avec un état contenant quelques notes:
1313

1414
```js
1515
const initialState = [
@@ -71,6 +71,119 @@ const App = () => {
7171
}
7272
```
7373

74+
Puisque l'attribut <i>name</i> de tous les boutons radio est le même, ils forment un <i>groupe de boutons</i> où une seule option peut être sélectionnée.
7475

76+
Les boutons ont un gestionnaire de changement qui imprime actuellement seulement la chaîne associée au bouton cliqué dans la console.
77+
78+
Nous décidons d'implémenter la fonctionnalité de filtre en stockant <i>la valeur du filtre</i> dans le store Redux en plus des notes elles-mêmes. L'état du store devrait ressembler à ceci après avoir effectué ces changements:
79+
80+
```js
81+
{
82+
notes: [
83+
{ content: 'reducer defines how redux store works', important: true, id: 1},
84+
{ content: 'state of store can contain any data', important: false, id: 2}
85+
],
86+
filter: 'IMPORTANT'
87+
}
88+
```
89+
90+
Dans l'implémentation actuelle de notre application, seul le tableau de notes est stocké dans l'état. Dans la nouvelle implémentation, l'objet d'état a deux propriétés, <i>notes</i> qui contient le tableau de notes et <i>filter</i> qui contient une chaîne indiquant quelles notes doivent être affichées à l'utilisateur.
91+
92+
### Reducers combinés
93+
94+
Nous pourrions modifier notre reducer actuel pour gérer la nouvelle forme de l'état. Cependant, une meilleure solution dans cette situation est de définir un nouveau reducer séparé pour l'état du filtre:
95+
96+
```js
97+
const filterReducer = (state = 'ALL', action) => {
98+
switch (action.type) {
99+
case 'SET_FILTER':
100+
return action.payload
101+
default:
102+
return state
103+
}
104+
}
105+
```
106+
107+
Les actions pour changer l'état du filtre ressemblent à ceci:
108+
109+
```js
110+
{
111+
type: 'SET_FILTER',
112+
payload: 'IMPORTANT'
113+
}
114+
```
115+
116+
Créons également une nouvelle fonction de _créateur d'action_. Nous écrirons le code pour le créateur d'action dans un nouveau module <i>src/reducers/filterReducer.js</i>:
117+
118+
```js
119+
const filterReducer = (state = 'ALL', action) => {
120+
// ...
121+
}
122+
123+
export const filterChange = filter => {
124+
return {
125+
type: 'SET_FILTER',
126+
payload: filter,
127+
}
128+
}
129+
130+
export default filterReducer
131+
```
132+
133+
Nous pouvons créer le reducer actuel pour notre application en combinant les deux reducers existants avec la fonction [combineReducers](https://redux.js.org/api/combinereducers).
134+
135+
Définissons le reducer combiné dans le fichier <i>main.jsx</i>:
136+
137+
```js
138+
import React from 'react'
139+
import ReactDOM from 'react-dom/client'
140+
import { createStore, combineReducers } from 'redux' // highlight-line
141+
import { Provider } from 'react-redux'
142+
import App from './App'
143+
144+
import noteReducer from './reducers/noteReducer'
145+
import filterReducer from './reducers/filterReducer' // highlight-line
146+
147+
// highlight-start
148+
const reducer = combineReducers({
149+
notes: noteReducer,
150+
filter: filterReducer
151+
})
152+
// highlight-end
153+
154+
const store = createStore(reducer) // highlight-line
155+
156+
console.log(store.getState())
157+
158+
/*
159+
ReactDOM.createRoot(document.getElementById('root')).render(
160+
<Provider store={store}>
161+
<App />
162+
</Provider>
163+
)*/
164+
165+
ReactDOM.createRoot(document.getElementById('root')).render(
166+
<Provider store={store}>
167+
<div />
168+
</Provider>
169+
)
170+
```
171+
172+
Puisque notre application se casse complètement à ce point, nous rendons un élément <i>div</i> vide au lieu du composant <i>App</i>.
173+
174+
L'état du store est imprimé dans la console:
175+
176+
[console devtools montrant les données du tableau de notes](../../images/6/4e.png)
177+
178+
Comme nous pouvons le voir dans la sortie, le store a exactement la forme que nous voulions!
179+
180+
Examinons de plus près comment le reducer combiné est créé:
181+
182+
```js
183+
const reducer = combineReducers({
184+
notes: noteReducer,
185+
filter: filterReducer,
186+
})
187+
```
75188

76189
</div>

0 commit comments

Comments
 (0)