标准角度和角度+ ngrx之间有什么区别?

时间:2017-10-04 14:23:02

标签: angular ngrx

我试图理解标准角4构建与使用角+ ngrx之间的区别?

1 个答案:

答案 0 :(得分:11)

当你说ngrx时,你是否正在谈论ngrx商店?

如果是这样,它是专门针对Angular的Redux实现。可能值得通过Redux introduction阅读以了解它的全部内容。

通常,它是用于控制应用程序状态的模式,以及整个应用程序中的数据流。

例如,采用角度分量。组件MyComponent加载了一些数据"产品"。现在,每当你离开这个时,就会将它存储在MyComponent中的数据(状态)丢失。因此,无论何时创建组件,我们都会重新加载它。效率不高,对我们不耐烦的用户来说并不是很好。

也许MyOtherComponent也可以获得产品!它拥有它的产品清单。但是用户可以在此处编辑product.name。状态已被MyOtherComponent修改,没有MyComponent知道它 - 所以它仍然显示旧名称。我们可以让每个人都持有对另一个人的引用,或者让父母获得数据 - 但是我们开始{@ 3}}我们在一个大网站中的所有组件。如果我们想改变任何事情,这不是好消息。

解决方案是注入一个服务,MyProductsService处理要做的事情(让他们称之为行动?),如loadData(),并将该状态存储在中心位置。< / p>

现在,当有人需要它时,他们会询问MyProductsService,并加载它并提供数据。当有人修改它时,他们必须回到MyProductsService,然后它就可以......啊。请参阅MyProductService如何判断某人改变了状态的依赖关系? MyProductsService.products已更新,但需要&#34;推送&#34;更改为MyComponentMyOtherComponent

这里的NgRx(为Angular设计的RxJS)很有用。它使用closely couple来管理&#34;推送&#34;数据。当有人想要products时,它会作为Observable提供,而MyComponents会订阅更新。当它发生变化时,products观察值会发出新值,每个人都会感到高兴。

现在,在所有这些结束之后,你最终会创建一些看起来有点像Redux的东西,但它的定制 - 可能有错误,没有经过测试,你就是&#39花了几个小时和几个小时。

因此,您始终可以使用已经由非常聪明的人编写的版本,并使用有用的教程进行全面测试。它遵循最佳实践,通常。与它交互的方式(变异状态)非常严格,因此它可以防止不必要的副作用。数据流量&#39;以可预测,可测试和可重复的方式从顶部开始。