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

时间:2018-05-28 12:38:09

标签: angularjs redux flux

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

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

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

例如这个datepicker:

容器组件具有此代码

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

Datepicker组件使用此控制器绑定

bindings: {
   date: '='
}

此模板,字面上使用我提到的旧指令

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

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

我是否应该相应地更改指令此行为,如果没有,如何触发此进入事件?我考虑过使用组件的 $ onChanges 函数,但这需要双向绑定,字面上更改模型,并且正在改变状态,这应该是不可变的

我是否错误地理解了redux,或者我尝试使用的 State&gt; Component&gt; Directive 行为只是不可能使用Redux?

提前致谢

1 个答案:

答案 0 :(得分:1)

首先,您可以尝试使用其连接器ng-redux,认为它可以简化某些内容。除此之外,我们的想法是您应该从指令/组件调度操作来更新存储,并且商店会通知所有侦听器有关更改(您可以使用redux提供的订阅方法)。

同样重要的一点是,您不需要将所有数据存储在redux存储中,有时具有自己数据的指令/组件(可能是双向绑定数据)对表单更灵活。在这种情况下,您只需要在某个地方派遣一个行动。

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