mirrorv
Version:
A fork of https://github.com/mirrorjs/mirror
61 lines (46 loc) • 1.39 kB
JavaScript
import {
createStore as _createStore,
applyMiddleware,
combineReducers,
compose
} from 'redux'
// import {routerMiddleware, routerReducer} from 'react-router-redux'
import { defaultReducers } from './addReducer'
import createMiddleware from './middleware'
// import {getHistory} from './router'
export let store
export function createStore(models, initialState, middlewares = []) {
const middleware = applyMiddleware(
...middlewares,
createMiddleware()
)
const enhancers = [middleware]
let composeEnhancers = compose
// Following line to exclude from coverage report:
/* istanbul ignore next */
if (process.env.NODE_ENV !== 'production') {
// Redux devtools extension support.
if (global.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) {
composeEnhancers = global.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__
}
}
const reducer = createReducer(models)
const enhancer = composeEnhancers(...enhancers)
store = _createStore(reducer, initialState, enhancer)
return store
}
export function replaceReducer(store, models) {
const reducer = createReducer(models)
store.replaceReducer(reducer)
}
function createReducer(models) {
const reducers = models.reduce((acc, cur) => {
acc[cur.name] = cur.reducer
return acc
}, {})
return combineReducers({
...reducers,
...defaultReducers,
// routing: routerReducer
})
}