javascript - Angular 2 中的 Redux 与服务

标签 javascript design-patterns architecture angular redux

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

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

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

迁移到 Redux 是否意味着所有这些都将移动到存储,并且几乎所有服务都将是无状态的并直接分派(dispatch)到存储,并且所有组件模型分别从存储订阅?

最佳答案

"Does migrating to Redux means all of this will be moved to store"

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

关于javascript - Angular 2 中的 Redux 与服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37767195/

相关文章:

javascript - 从元素中删除类后,IE6 不会更新样式

javascript - Electron JS-获取所选目录的路径

javascript - 按下回车键并单击?

oop - 具有抽象类型组件的 Fortran 派生类型

android - 如何获取其他 fragment 的 ViewModel

database - 企业解决方案的架构

javascript - 在 WebExtension 的后台和内容脚本中调用 API key

grails - 使用动态查找器的并行查询的Grails设计模式

java - java中实现大量具有相似签名的方法的最佳设计模式是什么?

architecture - 多层架构 - 责任问题