@bhupinderanand/react-redux-saga-boilerplate
Version:
Boilerplate with React and Redux with Redux Saga
47 lines (37 loc) • 1.26 kB
text/typescript
import { applyMiddleware, compose, createStore, Middleware, Store } from 'redux';
import { persistCombineReducers, persistStore } from 'redux-persist';
import autoMergeLevel2 from 'redux-persist/lib/stateReconciler/autoMergeLevel2';
import storage from 'redux-persist/lib/storage';
import reducers from 'reducers';
import rootSaga from 'sagas';
import { RootState } from 'types';
import middleware, { sagaMiddleware } from './middleware';
const rootReducer = persistCombineReducers<RootState>(
{
key: 'rrsb',
stateReconciler: autoMergeLevel2,
storage,
blacklist: ['alerts'],
timeout: 0,
},
reducers,
);
const composeEnhancer = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
/* istanbul ignore next */
export const configStore = (initialState: any = {}, additionalMiddleware: Middleware[] = []) => {
const store: Store = createStore(
rootReducer,
initialState,
composeEnhancer(applyMiddleware(...additionalMiddleware, ...middleware)),
);
sagaMiddleware.run(rootSaga);
if (module.hot) {
module.hot.accept('reducers', () => {
store.replaceReducer(rootReducer);
});
}
return {
persistor: persistStore(store),
store,
};
};