diff --git a/src/reducers/combinedReducer.js b/src/reducers/combinedReducer.js new file mode 100644 index 00000000..97e00e3f --- /dev/null +++ b/src/reducers/combinedReducer.js @@ -0,0 +1,8 @@ +import { combineReducers } from 'redux'; +import { routerReducer } from 'react-router-redux'; +import reducers from '.'; + +export default combineReducers({ + ...reducers, + routing: routerReducer +}); diff --git a/src/store/configureStore.js b/src/store/configureStore.js index d7552c00..19fe8a45 100644 --- a/src/store/configureStore.js +++ b/src/store/configureStore.js @@ -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; +}