代码拆分 - 拆分单个减速器

时间:2016-12-20 14:31:32

标签: javascript redux

我正在尝试基于路由实现代码分割。我看到他们使用injectReducers方法的示例,但这种方法仅在我们想要引入全新的reducer时才有用。

我希望能够按路线拆分减速器动作。例如,我有顶级currentUser减速器,它处理某些动作。当我输入/login路线时,我想更新currentUser缩减器并添加处理/login特定新操作的功能。

你知道如何妥善处理这个问题吗?

1 个答案:

答案 0 :(得分:0)

您可以将顶级缩减器更改为combineReducers调用,这会将currentUser缩减器与另一个缩减器结合使用:

import { combineReducers } from 'redux'

const currentUser = (state, action) => { ... }
const loginReducer = (state, action) => { ... }

export default combineReducers({
  currentUser,
  login: loginReducer,
})

此减速器产生的状态如下所示:

{
  currentUser: {
    ...
  },
  login: {
    ...
  }
}

您还可以将currentUser指定为combineReducers的来电,将其分成几部分:

const login = (state, action) => { ... }
const info = (state, action) => { ... }

const currentUser = combineReducers({
  login,
  info
})

导致状态如下:

{
  currentUser: {
    login: { ... },
    info: { ... }
  }
}