为复杂的关系域模型构建Redux状态

时间:2019-01-13 07:44:12

标签: javascript reactjs rest redux domain-driven-design

请考虑以下典型的CRUD应用程序:

数据层

实体之间具有一对一,一对多和多对多关系的关系域模型。实体保留在关系数据库中。

服务层

服务层提供了REST API,用于处理实体上的GETPOSTPUTDELETE方法以执行业务交易。

客户端状态层

客户端状态由Redux状态容器管理。 Redux将实体的表示形式存储在数据层中,并将未决事务存储在它们上。使用Redux中间件可以使代码更卫生并且更易于推理。

演示层

UI是使用React和客户端渲染实现的。组件内部状态被用作次要状态管理的“前奏”,以更大的笔刷(Redux操作)启动事务。

对于复杂域模型,构造Redux状态,reduce,动作和订阅的最佳方法是哪一种?当然可以最大程度地减少代码重复,但又可以对实体进行松散耦合和独立操作?另外,在组件内部状态上管理“未保存的更改”和验证逻辑是否更好?

1 个答案:

答案 0 :(得分:0)

要在Redux中管理关系域,请尝试normalized-reducer。它是一个高阶归约器,采用描述关系的模式,并返回一个归约器,操作和选择器,使您可以相应地进行写/读。它还可以轻松地与Normalizr和Redux Toolkit集成。