对所有CRUD操作使用单个Redux reducer?

时间:2016-12-07 06:37:25

标签: redux ngrx

为什么不使用单个reducer函数在Redux商店中添加,更新和删除实体?它可以简单地使用action.payload.table属性来标识要在商店中使用的正确“表”。

我从未在示例,博客文章等中看到过这种模式。相反,大多数示例都有专门用于切换实体上的单个字段的操作,例如待办事项上的“已完成”标记。大型应用程序中需要的重复次数使我无法使用Redux,所以我希望这是可行的。

例如:

function entityReducer(state, action) {

  //Action payload includes the entity "type" or "table" name

  switch(action.type) {
    case 'CREATE_ENTITY': {
      ...
    }
    case 'UPDATE_ENTITY': {
      ...
    }
    ...
  }
}

1 个答案:

答案 0 :(得分:1)

是的,这完全可行。实际上,我的生产应用程序中有类似的内容,我会根据需要在操作中传递itemTypeitemID和可能的newItemAttributes字段。也就是说,我还使用Redux-ORM作为抽象层来处理这些reducer中的更新。我在我的博客上写过a couple posts about using Redux-ORM

您可能还对Redux文档中的Structuring Reducers部分感兴趣,该部分讨论了重用reducer逻辑的方法。