将包装器/代理模式转换为redux

时间:2017-11-29 12:12:08

标签: design-patterns proxy redux wrapper

我目前正在研究reduxjs作为即将到来的项目的可行框架。 在那里,我们从旧的解决方案迁移,这大量使用代理/包装模式。

即:

  • 有些模特故意保持愚蠢(pojo)。他们只携带数据。我们假设这些是任务

  • 现在,这些任务会动态包装,这些对象可以为其提供验证和更改跟踪等交叉功能。

现在:每当更改属性时,实际上可能会发生3次对应用程序状态的更改。 E.g:

  1. 任务的“标题”属性已更改
  2. 由于此更改是通过包装器/代理完成的,因此它会检测到更改和
    1. a)将“haschagnes”字段更新为“true”
    2. b)和(可能)在“validationErrors”列表中添加验证错误
  3. 据我了解,在Redux中,每个动作只应处理一次并导致1个原子状态改变。 但是,在这种情况下,最多可以进行三次更改。

    所以我的问题是: 是否有可能将这种基于包装器/代理模式的方法转换为redux风格的方法? 如果是这样,怎么样? (Middleware,WrapperReducer,......?)

    谢谢你们!

1 个答案:

答案 0 :(得分:1)

  

据我了解,在Redux中,每个动作只应处理一次并导致1个原子状态改变。但是,在这种情况下,最多可以进行三次更改。

这是一种误解。在Redux中,单个调度操作可以由多个reducers处理。然后同时应用这些更改(即使它是1个原子状态更改,多个属性已更改)。

据我所知,你的用例应该可以用Redux实现。