@@ -5,35 +5,50 @@ import createHistory from 'history/createBrowserHistory'; // eslint-disable-line
5
5
import rootReducer from './rootReducer';
6
6
import rootSaga from './rootSaga';
7
7
8
- export const history = createHistory();
9
-
10
- const initialState = {};
11
- const enhancers = [];
12
- const sagaMiddleware = createSagaMiddleware();
13
- const middleware = [
14
- sagaMiddleware,
15
- routerMiddleware(history),
16
- ];
17
-
18
- if (process.env.NODE_ENV === 'development') {
19
- const { devToolsExtension } = window;
20
- if (typeof devToolsExtension === 'function') {
21
- enhancers.push(devToolsExtension());
8
+ export const storeElements = {
9
+ history: undefined,
10
+ store: undefined,
11
+ };
12
+
13
+ export default function configureStore() {
14
+ storeElements.history = createHistory();
15
+
16
+ const initialState = {};
17
+ const enhancers = [];
18
+ const sagaMiddleware = createSagaMiddleware();
19
+ const middleware = [
20
+ sagaMiddleware,
21
+ routerMiddleware(storeElements.history),
22
+ ];
23
+
24
+ if (process.env.NODE_ENV === 'development') {
25
+ const { devToolsExtension } = window;
26
+ if (typeof devToolsExtension === 'function') {
27
+ enhancers.push(devToolsExtension());
28
+ }
22
29
}
23
- }
24
30
25
- const composedEnhancers = compose(
26
- applyMiddleware(...middleware),
27
- ...enhancers,
28
- );
31
+ const composedEnhancers = compose(
32
+ applyMiddleware(...middleware),
33
+ ...enhancers,
34
+ );
35
+
36
+ storeElements.store = createStore(
37
+ rootReducer(),
38
+ initialState,
39
+ composedEnhancers,
40
+ );
29
41
30
- const store = createStore(
31
- rootReducer(),
32
- initialState,
33
- composedEnhancers,
34
- );
42
+ sagaMiddleware.run(rootSaga);
43
+ }
44
+
45
+ export function getStore() {
46
+ if(!storeElements.store) {
47
+ configureStore();
48
+ }
49
+ return storeElements.store;
50
+ }
35
51
36
- sagaMiddleware.run(rootSaga);
37
- export default function getStore() {
38
- return store;
52
+ export function getHistory() {
53
+ return storeElements.history;
39
54
}
0 commit comments