我是个新手,这个问题可能非常广泛.但我有兴趣了解更多关于状态管理的用法.最近,我们的一个项目使用NGXS库实现了状态管理.然而,我试图了解它给应用带来的所有好处是什么?

实现非常深入,而且在高级别上,有一些操作携带应用程序数据(由用户设置)和侦听器,这些操作处理请求并根据需要发送到下一步.这与一般的Angular 应用程序在应用程序使用或性能等方面有何不同.我正处于理解状态管理的初级阶段,所以我觉得我在写很多可能并不需要的代码.示例——为了转到另一个页面,我必须实现一个状态模式来保存对象,并声明一个操作和一个侦听器来实现该操作.

我正在查阅几份文件,了解如何实施国家管理的细节,但没有得到为什么应该实施国家管理的正确答案.

提前谢谢!

推荐答案

首先,要回答你的问题,你应该知道状态管理不是一个Angular 的术语,你不必使用它.状态管理是一个术语,定义了我们存储数据、修改数据并对其更改做出react 的方式.在我们的例子中,NGRX和NGXS库使用了一种称为CQRS (Command Query Responsibility Segregation)原则的模式,我引用维基百科的话:

它指出,每个方法要么是执行操作的命令,要么是向调用方返回数据的查询,但不能两者兼而有之.

状态管理是应用程序的唯一真实来源.

你可以不用复杂的状态管理来构建应用程序.你只能使用服务,而且你可以随时使用.向应用程序中添加状态管理库(例如NGRX/NGXS)会增加一些复杂性和样板文件,但这样做会带来以下好处(引用自https://stackoverflow.com/a/8820998/1860540):

  1. Large team-如果您 Select 了CQRS体系 struct ,您可以轻松地在人与人之间分割开发任务.你的高层人员可以处理域逻辑,把常规的东西留给技能较低的开发人员.

最受欢迎的Angular州管理库是NGRXNGXS.

我不会详细介绍NGRX,但简而言之,它已经在实际生产应用中证明了自己.

然而,NGXS是angular的一个较年轻的状态管理库,它采纳了NGRX的一些 idea ,并通过使用angular提供的工具(如DI)对其进行"授权".NGRX和NGXS之间的主要区别在于,NGXS上的样板文件要少得多.如果你感兴趣,你可以阅读主要原因Why another state management for Angular.

总之,如果你正在计划建立一个大规模的应用程序,那么你应该考虑使用状态管理,尽管你不必这么做.

Typescript相关问答推荐

React Hook中基于动态收件箱定义和断言回报类型

类型断言添加到类型而不是替换

TS不推断类型在条件判断后具有属性'

如何修复正在处理类型但与函数一起使用时不处理的类型脚本类型

Angular 行为:属性类型从SignalFunction更改为布尔

具有泛型类方法的类方法修饰符

如何以Angular 形式显示验证错误消息

路由链接始终返回到

如何使用Geojson模块和@Types/Geojson类型解析TypeScrip中的GeoJSON?

有什么方法可以类型安全地包装import()函数吗?

使用KeyOf和Never的循环引用

如何在Typescript 中组合unions ?

类型实例化过深,可能是无限的&TypeScrip中的TupleUnion错误

使用Cypress测试从Reaction受控列表中删除项目

TypeScrip:使用Cypress测试包含插槽的Vue3组件

为什么TypeScrip假定{...省略类型,缺少类型,...选取类型,添加&>}为省略类型,缺少类型?

Svelte+EsBuild+Deno-未捕获类型错误:无法读取未定义的属性(读取';$$';)

为什么类方法参数可以比接口参数窄

基于泛型的柯里化函数的条件参数

如何从列表中仅 Select 一种类型?