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

Use a single Redux reducer for all CRUD actions?

为什么不使用单个 reducer 函数来添加、更新和删除实体 to/from Redux 存储?它可以简单地使用 action.payload.table 属性 来识别在商店中使用的正确 "table"。

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

例如:

function entityReducer(state, action) {

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

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

是的,这完全可行。实际上,我的生产应用程序中有类似的东西,我根据需要在操作中传递 itemTypeitemID 和可能的 newItemAttributes 字段。也就是说,我也在我的博客上使用 Redux-ORM as an abstraction layer for handling updates within those reducers. I've written a couple posts about using Redux-ORM

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