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

时间:2017-03-22 12:48:40

标签: angular redux react-router react-redux ngrx

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

现在我想知道为什么你在ngrx / store-website上找到的example app of the ngrx/store使用多个商店;每个reducer都有一段这样的代码:

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

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

那么为什么官方指南不按照大多数人的建议使用单一商店?或者只要所有减速器属于一个模块,它是否被视为单个商店?如果没有,我如何实现一个单一的中央存储?我的想法是使用Store generic并将其变体放入表中。另一个选项是使用一个单独的JS对象,其属性使用reducer-actions更新。无论哪种方式,您必须在表或对象中具有一些结构。对此有什么最佳做法吗?你知道一个更好的示例应用程序吗?

1 个答案:

答案 0 :(得分:9)

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

使用单个商店被认为是最佳做法。对于几乎所有中小型应用,单个商店应该足够了。

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