当我使用ngxs
我的应用程序应该做什么时:
- 我的组件调用一个服务并且该服务以结果作为有效负载分派一个动作?
- 我的组件调度了一个动作,而我的状态调用了该服务?
我的观点是 Dispatched Action 本身应该是不可变的,而不是用于返回结果。相反,有兴趣知道结果的客户端(通常是由 Action 引起的状态更改)应该订阅状态更改。请注意,NGXS 是 CQRS 实现。
你可以两者都做,如果你研究开源应用程序,你可能会发现两者。
到目前为止,我个人(使用ngrx,但它是相同的)注入了商店并从(智能)组件发送了动作。
但是我最近一直在阅读很多文章facades
,我认为这实际上是正确的方法,以使您的组件尽可能简单,尤其是简化测试。
您可以在此处阅读有关外墙的更多信息:
https ://medium.com/@thomasburleson_11450/ngrx-facades-better-state-management-82a04b9a1e39
https://medium.com/default-to-open/understanding-a-large-scale-angular-app-with-ngrx-80f9fc5660cc
https://blog.nrwl.io/nrwl-nx-6-2-angular-6-1-and-better-state-management-e139da2cd074
如前所述,你可以做任何一个 - 这是我发布的一个较早的问题,其中一个 NGXS 团队的回复。
在我们的项目中,我们遵循了这种模式,调度一个动作,让状态的动作处理程序调用服务,然后用结果修补状态。如果需要,发送进一步的操作以指示成功或失败。