我正在尝试制作一个相当大的,可扩展的应用程序,我被告知最好的做法是让一个存储当前全局状态的单个存储(包括瞬态/删除重载和会话持久数据)整个应用程序,即使它被分成多个模块。
现在我想知道为什么你在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更新。无论哪种方式,您必须在表或对象中具有一些结构。对此有什么最佳做法吗?你知道一个更好的示例应用程序吗?
答案 0 :(得分:9)
示例应用使用单个商店。在这种情况下,状态是减速器的接口。你可以在一个商店里有很多减速器。
使用单个商店被认为是最佳做法。对于几乎所有中小型应用,单个商店应该足够了。
使用NGRX Store重新创建了Angular Tour of Heroes应用程序的一个很好的例子。你可以在这里找到它: http://bodiddlie.github.io/ng-2-toh-with-ngrx-suite/