>我正在使用 ngrx-store https://github.com/ngrx/platform/tree/master/example-app 的示例应用程序,但无法找出"app\auth\reducers\index.ts"文件中的一段代码
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
}
然后,当子状态扩展根状态时,它只是向子状态添加更多信息,这与它无关?所以在这种情况下,authState
和booksState
包含与rootState
包含的信息相同的信息以及它自己的信息?
以下appreducersindex.ts
中的注释:
如前所述,我们将每个化简器视为数据库中的表。这意味着我们的顶级状态接口只是内部状态类型的键映射。
在此示例中,interface AuthState
描述了功能模块的状态。
interface State extends fromRoot.State
提供有关可从此功能模块访问的完整状态(功能模块状态 + 顶部状态(的信息。在同一名称下,应根据功能模块保留不同的信息。这是一个很好的做法。