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

CW1*_*CW1 6 ngrx angular

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

Joe*_*Joe 20

当你说ngrx时,你是否特别谈论ngrx商店?

如果是这样,它是专门为Angular实现的Redux.通过Redux的介绍可能值得一读,以了解它的全部内容.

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

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

也许MyOtherComponent还有产品!它拥有它的产品清单.但是用户可以在product.name这里编辑.国家已被修改MyOtherComponent,但不MyComponent知道它 - 所以它仍然显示旧名称.我们可以让每个人都拥有对另一个的引用,或者让父母获得数据 - 但是这开始将我们所有组件紧密地耦合在一个大网络中.如果我们想要改变什么,那不是好消息.

一个解决方案是注入一个服务,MyProductsService处理要做的事情(让我们称之为动作?)loadData(),然后将状态存储在一个中心位置.

现在,当有人需要它时,他们会要求MyProductsService它,并加载它并提供数据.当有人修改它时,他们必须回去MyProductsService,然后它就可以......啊.看,如何MyProductService告诉别人改变状态的依赖关系?MyProductsService.products已经更新,但它需要"推动"改变两者MyComponentMyOtherComponent.

这里是NgRx(为Angular设计的RxJS)很有用的地方.它使用Observable Pattern来管理"推送"数据.当有人想要时products,它作为Observable提供,并MyComponents订阅更新.当它发生变化时,products观察者会发出一个新值,每个人都很开心.

现在,在所有这些结束之后,你最终会创建一些看起来有点像Redux的东西,但它是自定义的 - 可能有错误,未经测试,你花了数小时和数小时.

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

  • _"这里输入RxJs(或NgRx for Angular)."_.这听起来像ngrx是rxjs的角度版本,但事实并非如此. (5认同)
  • 非常好的解释。做得好! (2认同)