【问题标题】:Multiple stores in ngrxngrx 中的多家商店
【发布时间】:2020-12-02 03:11:32
【问题描述】:

我正在使用 Angular 和 ngrx 编写企业级应用程序。目的是始终使用 Flux 和 ngrx。为了重用和可分离性,我们需要(至少)两个不相互交互的状态存储。但我们确实需要两个商店同时处于活动状态,并且可能从相同的组件访问。

Ngrx 似乎是基于一次只会有一个 Store 的假设。有没有一种方法可以让我拥有多个 Store 对象(当然,模板使用不同的 State 对象),并同时加载和激活它们?

我知道“最佳做法”建议将商店合并为一个。除非有一种全新的方法,否则这在这里是不可行的。

【问题讨论】:

  • 不确定是否有单独的商店。您可以通过使用功能状态来完成您想要的事情。 github.com/ngrx/platform/blob/master/docs/store/…
  • 正如@bygrace 所说,实现两个分离的modules,然后在每个上简单地导入StoreModule.forFeature('reducerName', reducer)。当然,只需在您的app.module 中启动StoreModule.forRoot()。
  • 这就是我要找的,你们俩。非常感谢。如果你们中的任何一个想要回答这个问题,我都会投票并接受。如果没有,我会自己回答。

标签: angular ngrx


【解决方案1】:

我建议设置两个功能状态。以下是相关文档: https://github.com/ngrx/platform/blob/v5.2.0/docs/store/api.md#feature-module-state-composition

虽然这与拥有两个独立的商店不同,但在大多数实际用途中是相同的。加载导入 StoreModule.forFeature('featureName', reducers) 的模块时会加载功能状态。你可以懒惰或急切地做到这一点。每个功能状态都可以访问根状态,因此您可以将公共状态放在两者都可以访问的根状态上。功能状态不应该相互引用,因为它们可能不会被加载,这会否定拥有它们的原因。

【讨论】:

  • 尽管我声明我需要两个商店,但这就是我想要的答案。我需要的关键在于,每个 Store 都可以完全独立于其他 Store 定义其 Reducers、Effects、Actions 和 State 结构。我很高兴编写几行代码来将不同的 Store 定义组合到一个 StoreModule 中。
  • 恐怕链接不再有效。他们提出了 404 错误!
  • @IgnacioHR 看起来它移动了,但我没有使用过ngrx。所以我不能建议一个最近版本的链接,但我更新了这个版本的链接,这个链接在这个答案的时候应该是活跃的。
【解决方案2】:

我已经使用动作和减速器为多个商店创建了完整的应用程序。我已经在github上传了zip文件。

https://github.com/akashprince138/multiple_store

【讨论】:

  • 嗨,阿卡什。感谢您的贡献。但是,我们正在寻找解释的答案,而不仅仅是代码链接。如果您想在答案中解释您是如何做到这一点的(并且与其他答案有很大不同),您可以发布此链接作为示例。
猜你喜欢
  • 1970-01-01
  • 2019-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-14
  • 1970-01-01
  • 2018-03-25
  • 2022-10-21
相关资源
最近更新 更多