不确定如何创建良好的 redux 行为

Unsure on how to create a good redux behaviour

我已经有一个使用某些组件构建的 AngularJS (1.6) 应用程序。该应用程序本身只是一些旧的和 已经存在的 AngularJS 指令 的展示。我已经在一些组件中实现了它们,以便将它们打印在 UI 上。

我最近一直在学习 Redux(我对此还是个新手)并希望在整个项目中实现正确的 redux 行为。据我所知,有一个 单一应用程序状态 ,其中所有数据都是不可变的并且 单向绑定 到它的组件,它使用由其父级创建的事件,最终使用缩减器,重新创建应用程序状态并相应地更改数据。

我现在的问题是,这个已经现有的指令,是为了修改数据本身而构建的,它们不会触发事件。

例如这个日期选择器:

容器组件有这个代码

<example-datepicker date="model.date"></example-datepicker>

Datepicker 组件 使用此控制器绑定

bindings: {
   date: '='
}

这个模板,它确实使用了我提到的旧指令

<date-picker date-model="model.date" name="dateForm"></date-picker>

好吧,日期选择器指令只负责显示日期选择器,并且每当用户选择日期时更改模型。现在假设我的应用程序状态有这个 "date" 字符串。它应该是不可变的,那么指令不应该改变它,对吧?

我是否应该相应地更改指令,如果不是,我如何将此触发到一个事件中?我考虑过使用组件的 $onChanges 函数,但这需要 双向绑定 ,字面上 改变了model,这就是改变状态,应该是 immutable.

我是不是理解错了 redux,或者我尝试使用的 State>Component>Directive 行为根本 不可能终极版?

提前致谢

首先你可以尝试ng-redux它的连接器,认为它可以简化一些东西。除此之外,这个想法是你应该从 directives/components 调度操作来更新商店,并且商店通知所有侦听器有关更改(你可以使用 redux 提供的订阅方法)。

同样重要的一件事是您不需要将所有数据存储在您的 redux 存储中,有时 directives/components 拥有自己的数据(它可能是双向绑定数据)更多灵活的形式。在那种情况下,你只需要在某个地方派发一个动作。

如果您需要触发 $onChanges 挂钩,您应该只更新对传递给组件的对象的引用