awesome-compose/react-java-mysql/frontend/src/app/store.js

38 lines
1.0 KiB
JavaScript
Executable File

import { routerMiddleware } from 'react-router-redux';
import { createStore, applyMiddleware, compose } from 'redux';
import createSagaMiddleware from "redux-saga";
import { rootReducer } from "./reducers";
export const sagaMiddleware = createSagaMiddleware();
export const configureStore = (history, initialState = {}) => {
const middlewares = [
routerMiddleware(history),
sagaMiddleware
];
const enhancers = [
applyMiddleware(...middlewares),
];
if(__DEV__) {
const devToolEnhancer = () => {
return typeof window === 'object' && typeof window.devToolsExtension !== 'undefined'
? window.devToolsExtension() : f => f;
};
enhancers.push(devToolEnhancer())
}
const store = createStore(rootReducer, initialState, compose(...enhancers));
if(__DEV__ && module.hot) {
module.hot.accept('./reducers', () => {
const nextReducer = require('./reducers').default;
store.replaceReducer(nextReducer);
})
}
return store;
};