2017-03-22 50 views
4

我试图做一个相当大的,可扩展的应用程序,我被告知最好的做法是让一个存储当前全局状态的单个存储(包括临时/重载加载和会话级加载)持久数据),即使它被分成多个模块。为什么ngrx/store示例应用程序使用多个商店? (如何设计商店)

现在我想知道为什么您可以在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通用并将它们的变体放入表中。另一种选择是让一个JS对象的属性由reducer动作更新。无论哪种方式,你必须在表或对象中有一些结构。有没有这方面的最佳做法?你知道更好的示例应用程序吗?

+4

上面的回购使用单店。请参阅'src/app/redurs/index.ts' – yurzui

+0

我以为一个国家是商店?! – Phil

回答

6

示例应用程序正在使用单个商店。在这种情况下,状态是reducer的接口。您可以在一家商店购买许多减速器。

使用单一商店被认为是最佳实践。对于几乎所有的中小型应用程序,单一商店都应该足够了。

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

+0

对于大型应用程序如何。我需要创建多个商店 –