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

8
我正在尝试开发一个规模较大、可扩展的应用程序,并被告知最佳实践是使用单一存储来存储整个应用程序的当前全局状态(包括瞬态/重新加载删除和会话持久数据),即使它分成多个模块。
现在我想知道为什么ngrx/store示例应用在 ngrx/store 网站上使用多个存储;每个 reducer 都有自己的代码片段,如下所示:
export interface State {
  ids: string[];
  entities: { [id: string]: Book };
  selectedBookId: string | null;
};

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

所以为什么官方指南不像大多数人建议的那样使用单一存储?或者只要所有减速器都属于一个模块,它就被视为单一存储了吗?如果不是,我该如何实现一个单一的中央存储?我的想法是使用Store通用类型并将其变体放入表格中。另一个选项是拥有一个单一的JS对象,您可以使用reducer-actions更新其属性。无论哪种方式,您都必须在表格或对象中有一些结构。有没有关于此的最佳实践?您知道更好的示例应用程序吗?

4
以上代码库使用单一状态仓库。请参考 src/app/reducers/index.ts 文件。 - yurzui
1
我以为状态是一个存储器?! - Phil
1个回答

10

这个示例应用程序正在使用单个存储。在这种情况下,状态是一个reducer的接口。您可以在一个存储中拥有多个reducer。

使用单个存储被认为是最佳实践。对于几乎所有小型和中型应用程序,单个存储应该足够。

有一个非常好的Angular Tour of Heroes应用程序的示例,使用了NGRX Store进行重建。您可以在这里找到: http://bodiddlie.github.io/ng-2-toh-with-ngrx-suite/


5
对于大型应用程序怎么处理?我需要创建多个商店。 - Ghyath Serhal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接