ngrx / strore示例应用程序,为什么子状态扩展根状态?

时间:2017-11-18 13:42:38

标签: angular ngrx-store

我正在玩ngrx-store https://github.com/ngrx/platform/tree/master/example-app的示例应用,无法在" app \ auth \ redurs \ index.ts&#34中找出一段代码;文件

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 个答案:

答案 0 :(得分:1)

遵循app\reducers\index.ts中的评论:

  

如上所述,我们将每个reducer视为数据库中的表。这意味着我们的顶级状态接口只是内部状态类型的键映射。

在此示例中,interface AuthState描述了要素模块的状态。

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