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

标签 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': {
      ...
    }
    ...
  }
}

最佳答案

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

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

关于redux - 对所有 CRUD 操作使用单个 Redux reducer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41010947/

相关文章:

javascript - ngrx/effect 将数据传递给运算符(operator)

angular - Action /效果 UI 通知后的 ngrx/store

angular - 使用 NgRx 加载子路由

react-native - redux 中的 action、reducer 和 store 有什么区别?

angular - 使用ngrx/store更新store的正确方法

reactjs - 如何在redux store中保存数组对象数据

javascript - 以编程方式渲染 Redux 表单字段

reactjs - 你如何在 reactjs/redux 应用程序中维护列表中的选定项目?

angular6 - 如何通过简单的 http 调用使用 @ngrx/effects?

javascript - Ngrx Store - 所有 UI 更改都应该存储吗?