Angular 2数据流与Flux之间的关键区别是什么?

时间:2017-03-13 14:26:25

标签: angular reactjs redux flux dataflow

您好我正在研究Angular 2和React + Redux,我对这两个选项的数据流差异存在疑问。

  1. Angular 2默认使用单向数据流。 Redux是一个Flux实现,它(也)使用单向数据流。这些之间的关键区别是什么? (它可能是零件的组成吗?)
  2. 如果这两者在数据流方面没有太大差异,为什么有人会使用Flux或Redux而不是默认选择Angular 2框架?
  3. 如果这两者完全不同,是否有一个名称我可以调用Angular 2的数据流,以便进一步参考以比较这两者?
  4. 提前多多感谢!

2 个答案:

答案 0 :(得分:4)

  

如果这两者在数据流动方面没有太大差异,为什么呢?   有人会使用Flux或Redux而不是默认选择Angular 2   框架?

Angular主要提供UI层(组件),而框架未预定义状态管理。由于angular具有服务,因此您可以将业务逻辑保留在服务(有状态服务)和组件(有状态组件)中的UI状态中,但这意味着状态没有单一位置,因为它分布在服务/组件中。

在角度应用程序中使用redux的主要原因是将UI层与数据层分开。在redux中,状态被分成一个单独的层(想象单个树状对象),它通过注入组件构造函数的特殊服务(检查this setup)与UI层(组件)同步。

  

如果这两者完全不同,是否有我可以要求的名称   Angular 2的数据流用于进一步参考以比较这两个?

我没有碰到过一个,可能是因为正如我上面提到的那样,角度作为一个框架专注于演示,而不是状态。

答案 1 :(得分:2)

通过将Redux与angular 2结合使用,您可以将应用程序状态集中在一个完全独立于组件的位置:商店。

您的组件可以是无状态的,允许您像这样禁用内部更改检测。

@Component({
  changeDetection: ChangeDetectionStrategy.OnPush
})
class myComponent {
  @Input() inputFromTheStore: Observable<State>;
}

实际上,上面的例子是一个无状态的组件,你插入一个状态流。

也回答你的问题:

  

Angular 2默认使用单向数据流。 Redux是一个Flux   实现,它(也)使用单向数据流。什么是   这些之间的关键区别? (也许是,组成   份?)

关键的区别在于,对于Redux,状态将始终通过@Input()从上方进入。与传统的angular2状态完整组件不同,其中状态可以通过@Input()@Output()传递。