【问题标题】:Unsure on how to create a good redux behaviour不确定如何创建良好的 redux 行为
【发布时间】:2018-11-07 01:34:21
【问题描述】:

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

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

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

例如这个日期选择器:

容器组件有这个代码

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

日期选择器组件使用此控制器绑定

bindings: {
   date: '='
}

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

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

现在,日期选择器指令只负责显示日期选择器,并在用户选择日期时更改模型。现在想象一下我的应用程序状态有这个“日期”字符串。它应该是不可变的,那么指令不应该改变它,对吧?

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

我是否错误地理解了 redux,或者我尝试使用的这种 State>Component>Directive 行为对于 Redux 来说只是 不可能

提前致谢

【问题讨论】:

    标签: angularjs redux flux


    【解决方案1】:

    首先你可以尝试ng-redux 的连接器,认为它可以简化一些东西。除此之外的想法是你应该从指令/组件中派发动作来更新 store,并且 store 通知所有侦听器有关更改(你可以使用 redux 提供的 subscribe 方法)。

    同样重要的一点是,您不需要将所有数据都存储在您的 redux 存储中,有时使用带有自己数据的指令/组件(可能是双向绑定数据)对于表单来说更加灵活。在这种情况下,您只需要在某个地方调度一个动作。

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

    【讨论】:

    • 是的,我正在使用 ng-redux 并且到目前为止已经成功连接了所有这些。问题是,要么更改指令以调度动作,要么在更大的东西(如表单)中使用它,然后从表单的保存中调度动作,对吗?
    • 我实际上更喜欢做的是创建一个连接到商店的特殊组件,它们包含所有需要的操作,这些操作可以传递给这些组件内部的指令。是的,可以调用表单提交或模糊的操作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-29
    • 1970-01-01
    • 2013-06-19
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    • 2015-03-14
    相关资源
    最近更新 更多