为什么 ngrx/store 示例应用程序使用多个商店? (如何设计店铺)

Why does ngrx/store example app use multiple stores? (how to design store)

我正在尝试制作一个相当大的、可扩展的应用程序,我被告知最好的做法是让一个存储存储当前全局状态(包括 transient/deleted-on-reload 和会话持久数据)整个应用程序,即使它被分成多个模块。

现在我想知道为什么您可以在 ngrx/store-website 上找到的 example app of the ngrx/store 使用多个商店;每个减速器都有自己的一段代码,如下所示:

export interface State {
  ids: string[];
  entities: { [id: string]: Book };
  selectedBookId: string | null;
};

export const initialState: State = {
  ids: [],
  entities: {},
  selectedBookId: null,
};

那么为什么官方指南没有像大多数人推荐的那样使用单一商店呢?或者只要所有减速器都属于一个模块,它就被认为是一个单一的商店吗?如果没有,我如何实施一个单一的中央商店?我的想法是使用 Store generic 并将它们的变体放入 table。另一种选择是拥有一个单独的 JS 对象,您可以使用 reducer-actions 更新其属性。无论哪种方式,您都必须在 table 或对象中有一些结构。这有什么最佳做法吗?你知道更好的示例应用程序吗?

示例应用使用单个商店。在这种情况下,状态是减速器的接口。你可以在一个商店里有很多减速器。

使用单一商店被认为是最佳做法。几乎所有的中小型应用程序,一个商店就足够了。

Angular Tour of Heroes 应用程序有一个很好的例子,它是使用 NGRX Store 重新创建的。你可以在这里找到它: http://bodiddlie.github.io/ng-2-toh-with-ngrx-suite/