2017-11-18 94 views
2

我玩NGRX店https://github.com/ngrx/platform/tree/master/example-app的示例应用程序并不能找出一段代码在“应用程序\权威性\ \减速器index.ts”文件ngrx/strore示例应用程序,为什么子状态扩展了根状态?

export interface State extends fromRoot.State { 
    auth: AuthState; 
} 

在同一文件中,我们已经有接口描述的状态

export interface AuthState { 
    status: fromAuth.State; 
    loginPage: fromLoginPage.State; 
} 

那么,为什么我们要创建另一个状态,什么是更重要的,为什么这个新的国家应扩大根状态?

这里是根状态

export interface State { 
    layout: fromLayout.State; 
    routerReducer: fromRouter.RouterReducerState<RouterStateUrl>; 
} 

不整的状态,仅仅是保存所有子州,如身份验证状态,和书籍状态的对象?因此,它可以像

{ 
    root: rootState, 
    auth: authState, 
    books: booksState 
} 

然后,当一个孩子的状态延伸根状态,它只是增加了更多的信息,孩子的状态,这是不相关的呢?因此,在这种情况下,authStatebooksState包含的信息与rootState包含的信息以及其自己的信息相同?

回答

1

app\reducers\index.ts评论:

如前所述,我们对待每一个减速就像在一个数据库中的表。这意味着我们的顶级状态接口只是内部状态类型的键映射。

在本例中,interface AuthState描述了特征模块的状态。

interface State extends fromRoot.State为您提供有关可从此功能模块(功能模块状态+顶部状态)访问的完整状态的信息。在同一名称下,您应该根据功能模块保留不同的信息。这是一个很好的做法。