2017-11-18 99 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爲您提供有關可從此功能模塊(功能模塊狀態+頂部狀態)訪問的完整狀態的信息。在同一名稱下,您應該根據功能模塊保留不同的信息。這是一個很好的做法。