-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
49 lines (37 loc) · 1.31 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import React from 'react';
import ReactDOM from 'react-dom';
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
import { forOwn } from 'lodash';
import { fromJS } from 'immutable';
import { createStore, applyMiddleware } from 'redux';
import { Provider } from 'react-redux';
import { createLogger } from 'redux-logger';
import ReduxThunk from 'redux-thunk';
import reducers from './reducers';
import registerServiceWorker from './registerServiceWorker';
import './styles.css';
import App from './App';
const middleware = [ReduxThunk];
if (process.env.NODE_ENV === 'development') {
middleware.push(createLogger());
}
const persistedState = localStorage.getItem('reduxState') ? JSON.parse(localStorage.getItem('reduxState')) : {};
// Iterate over each object in the persisted state and convert it to an immutable map
forOwn(persistedState, (value, key) => persistedState[key] = fromJS(value));
const store = createStore(
reducers,
persistedState,
applyMiddleware(...middleware),
);
store.subscribe(() => {
localStorage.setItem('reduxState', JSON.stringify(store.getState()));
});
const WrappedApp = () => (
<Provider store={store}>
<MuiThemeProvider>
<App />
</MuiThemeProvider>
</Provider>
);
ReactDOM.render(<WrappedApp />, document.getElementById('root'));
registerServiceWorker();