Skip to content

Commit b4b2b36

Browse files
Last fixes
1 parent 68a5a2e commit b4b2b36

File tree

2 files changed

+77
-2
lines changed

2 files changed

+77
-2
lines changed

step-6/readme.md

+76-1
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,82 @@ import { DevTools } from './components/devtools';
270270
const store = compose(applyMiddleware(thunk), DevTools.instrument())(createStore)(app);
271271
```
272272

273-
Et vous pouvez maintenant jouer avec les devtools et jouer avec le temps dans votre application
273+
Et vous pouvez maintenant jouer avec les devtools et jouer avec le temps dans votre application.
274+
Il y a cependant un problème. Même si l'état de votre application change, ce dernier n'est pas synchronisé avec le routeur et l'expérience des `devtools` n'est pas optimale. Pour éviter cela nous allons utiliser `react-router-redux`.
275+
276+
Commencons par installer la dépendance. Ajoutez les lignes suivantes dans votre fichier `package.json` puis lancez `npm install`
277+
278+
```json
279+
"dependencies": {
280+
...
281+
"react-router-redux": "4.0.0",
282+
...
283+
}
284+
```
285+
286+
ou alors via la ligne de commande
287+
288+
```
289+
npm install --save [email protected]
290+
```
291+
292+
Ajoutez ensuite le `reducer` dédié de `react-router-redux` dans votre `reducer` global (`src/reducers/index.js`)
293+
294+
```javascript
295+
import { combineReducers } from 'redux';
296+
import { comments } from './comments';
297+
import { likes } from './likes';
298+
import { regions } from './regions';
299+
import { wines, currentWine } from './wines';
300+
import { title } from './title';
301+
import { http } from './http';
302+
import { routerReducer } from 'react-router-redux';
303+
304+
export const app = combineReducers({
305+
comments,
306+
likes,
307+
regions,
308+
wines,
309+
currentWine,
310+
title,
311+
http,
312+
// ici on rajoute un reducer capable de mémoriser la route courante
313+
routing: routerReducer
314+
})
315+
```
316+
317+
il ne reste plus qu'a synchroniser les changements d'état du routeur avec le store, ce qui revient a dispatcher des actions pour chaque changement de route.
318+
319+
Editez votre fichier `src/app.js` comme suivant
320+
321+
```javascript
322+
import React from 'react';
323+
import ReactDOM from 'react-dom';
324+
325+
import { Router, Route, hashHistory, IndexRoute } from 'react-router';
326+
327+
import { Provider } from 'react-redux';
328+
import { createStore, applyMiddleware, compose } from 'redux';
329+
import { syncHistoryWithStore } from 'react-router-redux';
330+
import thunk from 'redux-thunk';
331+
import { app } from './reducers';
332+
import { DevTools } from './components/devtools';
333+
334+
const store = compose(applyMiddleware(thunk), DevTools.instrument())(createStore)(app);
335+
// ici on synchronise le routeur avec le store
336+
const history = syncHistoryWithStore(hashHistory, store);
337+
338+
...
339+
340+
ReactDOM.render(
341+
<Provider store={store}>
342+
<Router history={history}> // et on utilise notre historique synchronisé
343+
...
344+
</Router>
345+
</Provider>
346+
, document.getElementById('main')
347+
);
348+
```
274349

275350
## A vous de jouer !
276351

step-7/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"react-dom": "0.14.7",
88
"react-redux": "4.4.1",
99
"react-router": "2.0.1",
10-
"react-router-redux": "^4.0.0",
10+
"react-router-redux": "4.0.0",
1111
"redux": "3.3.1",
1212
"redux-devtools": "3.1.1",
1313
"redux-devtools-dock-monitor": "1.1.0",

0 commit comments

Comments
 (0)