Cargue dinámicamente los reductores redux con el router de reacción 4

Estoy dividiendo mi código en función de los componentes y quiero inyectar mis reductores solo cuando se carga un componente, en lugar de apilarlos desde el principio en la tienda.

En react router 3 fue bastante sencillo, pero parece que no puedo hacer que funcione con react router 4.

Aquí están los reductores y la tienda:

reducers.js

import { combineReducers } from 'redux'
import { routerReducer } from 'react-router-redux'

import modalReducer from '../modules/modal'

export default combineReducers({
  routing : routerReducer,
  modal   : modalReducer
})

store.js

import { createStore, applyMiddleware, compose } from 'redux'
import { routerMiddleware } from 'react-router-redux'
import thunk from 'redux-thunk'
import createHistory from 'history/createBrowserHistory'
import rootReducer from './reducers'

export const history = createHistory()

const initialState = {}
const enhancers = []
const middleware = [
  thunk,
  routerMiddleware(history)
]

if (process.env.NODE_ENV === 'development') {
  const devToolsExtension = window.devToolsExtension

  if (typeof devToolsExtension === 'function') {
    enhancers.push(devToolsExtension())
  }
}

const composedEnhancers = compose(
  applyMiddleware(...middleware),
  ...enhancers
)

const store = createStore(
  rootReducer(),
  initialState,
  composedEnhancers
)
export default store

Y estoy usando carga perezosa para las rutas.

¿Cómo implemento reductores divididos?

Me gustaría inyectar los reductores asíncronos algo así:

function createReducer(asyncReducers) {
  return combineReducers({
    ...asyncReducers,
    system,
    router,
  })
}

function injectReducer(store, { key, reducer }) {
  if (Reflect.has(store.asyncReducers, key)) return

  store.asyncReducers[key] = reducer
  store.replaceReducer(createReducer(store.asyncReducers))
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta