mirror of
https://github.com/elyby/accounts-frontend.git
synced 2025-01-09 13:28:02 +05:30
39 lines
1.4 KiB
JavaScript
39 lines
1.4 KiB
JavaScript
|
import { createStore, applyMiddleware, compose } from 'redux';
|
|||
|
// midleware, который позволяет возвращать из экшенов функции
|
|||
|
// это полезно для работы с асинхронными действиями,
|
|||
|
// а также дает возможность проверить какие-либо условия перед запуском экшена
|
|||
|
// или даже вообще его не запускать в зависимости от условий
|
|||
|
import thunk from 'redux-thunk';
|
|||
|
import { syncHistory } from 'react-router-redux';
|
|||
|
import { browserHistory } from 'react-router';
|
|||
|
|
|||
|
import reducers from 'reducers';
|
|||
|
import DevTools from 'containers/DevTools';
|
|||
|
|
|||
|
export default function storeFactory() {
|
|||
|
const reduxRouterMiddleware = syncHistory(browserHistory);
|
|||
|
const middlewares = applyMiddleware(
|
|||
|
reduxRouterMiddleware,
|
|||
|
thunk
|
|||
|
);
|
|||
|
|
|||
|
/* global process: false */
|
|||
|
let enhancer;
|
|||
|
if (process.env.NODE_ENV === 'production') {
|
|||
|
enhancer = compose(middlewares);
|
|||
|
} else {
|
|||
|
enhancer = compose(middlewares, DevTools.instrument());
|
|||
|
}
|
|||
|
|
|||
|
const store = createStore(reducers, {}, enhancer);
|
|||
|
|
|||
|
// Hot reload reducers
|
|||
|
if (module.hot) {
|
|||
|
module.hot.accept('reducers', () =>
|
|||
|
store.replaceReducer(require('reducers').default)
|
|||
|
);
|
|||
|
}
|
|||
|
|
|||
|
return store;
|
|||
|
}
|