From 2b277184936939212a99543c492c813f4d0e9799 Mon Sep 17 00:00:00 2001 From: Andrey Okonetchnikov Date: Tue, 13 Sep 2016 18:05:20 +0200 Subject: [PATCH] Enabled HMR for reducers --- src/reducers/combinedReducer.js | 8 ++++++++ src/store/configureStore.js | 30 ++++++++++++++++-------------- 2 files changed, 24 insertions(+), 14 deletions(-) create mode 100644 src/reducers/combinedReducer.js 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; +}