Enabled HMR for reducers

This commit is contained in:
Andrey Okonetchnikov 2016-09-13 18:05:20 +02:00
parent 5f74d0ae28
commit 2b27718493
2 changed files with 24 additions and 14 deletions

View File

@ -0,0 +1,8 @@
import { combineReducers } from 'redux';
import { routerReducer } from 'react-router-redux';
import reducers from '.';
export default combineReducers({
...reducers,
routing: routerReducer
});

View File

@ -1,18 +1,20 @@
import { createStore, applyMiddleware, combineReducers, compose } from 'redux';
import { createStore, applyMiddleware, compose } from 'redux';
import thunkMiddleware from 'redux-thunk';
import { routerReducer } from 'react-router-redux';
import reducers from '../reducers';
import reducer from '../reducers/combinedReducer';
const reducer = combineReducers({
...reducers,
routing: routerReducer
});
export default function configureStore(initialState) {
const store = createStore(reducer, initialState, compose(
applyMiddleware(thunkMiddleware),
window.devToolsExtension ? window.devToolsExtension() : f => f
));
const createStoreWithMiddleware = compose(
applyMiddleware(thunkMiddleware),
window.devToolsExtension ? window.devToolsExtension() : (f) => f
)(createStore);
if (module.hot) {
// Enable Webpack hot module replacement for reducers
module.hot.accept('../reducers/combinedReducer', () => {
const nextReducer = require('../reducers/combinedReducer') // eslint-disable-line
store.replaceReducer(nextReducer);
});
}
export default (initialState) => (
createStoreWithMiddleware(reducer, initialState)
);
return store;
}