Skip to content

Commit 68c4e66

Browse files
committed
Merge pull request #82 from qnm/improve-readme
Improve instructions, adding examples and notes on middleware ordering
2 parents bb48132 + 1eb5d62 commit 68c4e66

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

README.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,44 @@ A live-editing time travel environment for [Redux](https://github.com/rackt/redu
2121
npm install --save-dev redux-devtools
2222
```
2323

24+
DevTools is a store enhancer, which should be added to your middleware stack *after* `applyMiddleware` as `applyMiddleware` is potentially asynchronous. Otherwise, DevTools won't see the raw actions emitted by the Promise store enhancer etc.
25+
26+
To install, firstly import `devTools` into your App container:
27+
```
28+
import { devTools, persistState } from 'redux-devtools';
29+
import { DevTools, DebugPanel, LogMonitor } from 'redux-devtools/lib/react';
30+
```
31+
32+
Then, add `devTools` to your middleware, and create your store:
33+
```
34+
const finalCreateStore = compose(
35+
applyMiddleware(thunk),
36+
devTools(),
37+
persistState(window.location.href.match(/[?&]debug_session=([^&]+)\b/)),
38+
createStore
39+
);
40+
41+
const store = finalCreateStore(reducer);
42+
```
43+
44+
Lastly, include the `DebugPanel` in your page:
45+
```
46+
export default class App extends Component {
47+
render() {
48+
return (
49+
<div>
50+
<Provider store={store}>
51+
{() => <CounterApp />}
52+
</Provider>
53+
<DebugPanel top right bottom key="debugPanel">
54+
<DevTools store={store} monitor={LogMonitor} />
55+
</DebugPanel>
56+
</div>
57+
);
58+
}
59+
}
60+
```
61+
2462
[This commit](https://github.com/gaearon/redux-devtools/commit/0a2a97556e252bfad822ca438923774bc8b932a4) should give you an idea about how to add Redux DevTools for your app **but make sure to only apply `devTools()` in development!** In production, this will be terribly slow because actions just accumulate forever. (We'll need to implement a rolling window for dev too.)
2563

2664
For example, in Webpack, you can use `DefinePlugin` to turn magic constants like `__DEV__` into `true` or `false` depending on the environment, and import and render `redux-devtools` conditionally behind `if (__DEV__)`. Then, if you have an Uglify step before production, Uglify will eliminate dead `if (false)` branches with `redux-devtools` imports. Here is [an example](https://github.com/erikras/react-redux-universal-hot-example/compare/66bf63fb0f23a3c264a5d37c3acb4c047bf0c0c9...c6515236a1def8a3d2bfeb8f6cd6f0ccdb2f9e1b) of adding React DevTools to a project handling the production case correctly.

0 commit comments

Comments
 (0)