Javascript Angular 2中的Redux vs服务

Javascript Angular 2中的Redux vs服务,javascript,design-patterns,architecture,angular,redux,Javascript,Design Patterns,Architecture,Angular,Redux,我想确保我正确理解了Redux。我的理解是,它将存储应用程序(包括所有子系统)的完整状态,如所有组件的模型以及获取数据和用户生成数据的缓存。这是否意味着我永远不应该使用服务根据组件的模型id加载/保存组件的状态 我正在制作一个测验应用程序,它由测验、分类、问题和选择等组件组成。目前,每个组件都调用web API来获取数据并维护自己的状态,或者借助于一个服务,该服务通过id字段跟踪所有内容 我有一个名为AnswerService的专用服务来维护所选选项的状态,其中每个选项组件在呈现时获取其状态 迁

我想确保我正确理解了Redux。我的理解是,它将存储应用程序(包括所有子系统)的完整状态,如所有组件的模型以及获取数据和用户生成数据的缓存。这是否意味着我永远不应该使用服务根据组件的模型id加载/保存组件的状态

我正在制作一个测验应用程序,它由测验、分类、问题和选择等组件组成。目前,每个组件都调用web API来获取数据并维护自己的状态,或者借助于一个服务,该服务通过id字段跟踪所有内容

我有一个名为AnswerService的专用服务来维护所选选项的状态,其中每个选项组件在呈现时获取其状态


迁移到Redux是否意味着所有这些都将被移动到store,实际上所有服务都将是无状态的,并直接分派到store,并且所有组件模型都分别从store订阅?

谢谢您的提问。我也面临同样的困境。我现在回答自己的方式是,我仍然有可测试的服务来封装“redux”函数执行的状态更改操作。 在我看来,在基本redux示例中看到的带有巨大if语句的redux函数只是一个开始。。。我想没有人会在一个大的应用程序中真的这样编码。。。。 但是,我想说,让这个redux中介捕获任何状态更改事件并将其发送到相应的服务似乎是个好主意。还不确定我们是否也希望将只读GET封装在服务中。。。也许不是。。但那将是另一场讨论

“迁移到Redux是否意味着所有这些都将移动到存储”

否。
如果您使用的是ngrx,那么处理此问题的最佳方法是使用ngrx/效果。这是一个附带的库,它是“放置异步代码的地方”,或者换句话说,是产生副作用的地方。因此,当组件需要一些新数据时,它将发送一个“GET_data”操作,这将作为ngrx@Effect处理。在您的效果内部,您可以使用自定义服务调用和检索数据(因此您的异步服务可能很好,可能只需要稍微调整一下)。然后,将包含新数据的操作返回给reducer,reducer使用新数据更新状态。您的组件一直在订阅存储,因此当reducer更新状态时,组件知道此更改并可以自动更新自己的本地状态