对所有 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': {
...
}
...
}
}
是的,这完全可行。实际上,我的生产应用程序中有类似的东西,我根据需要在操作中传递 itemType
、itemID
和可能的 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 逻辑的方法。
为什么不使用单个 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': {
...
}
...
}
}
是的,这完全可行。实际上,我的生产应用程序中有类似的东西,我根据需要在操作中传递 itemType
、itemID
和可能的 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 逻辑的方法。