我正在玩 ngrx-store 的示例应用程序 https://github.com/ngrx/platform/tree/master/example-app无法找出“app\auth\reducers\index.ts”文件中的一段代码
export interface State extends fromRoot.State {
auth: AuthState;
}
在同一个文件中我们已经有了描述状态的接口(interface)
export interface AuthState {
status: fromAuth.State;
loginPage: fromLoginPage.State;
}
那么为什么我们应该创建另一个状态,更重要的是,为什么这个新状态应该扩展根状态?
这是根状态
export interface State {
layout: fromLayout.State;
routerReducer: fromRouter.RouterReducerState<RouterStateUrl>;
}
难道整个状态不就是一个包含所有子状态的对象,比如 auth 状态和 books 状态吗?所以它看起来像
{
root: rootState,
auth: authState,
books: booksState
}
然后,当子状态扩展根状态时,它只是向子状态添加了更多信息,这与它无关?那么在这种情况下,authState
和 booksState
包含与 rootState
包含的信息相同的信息加上它自己的信息?
最佳答案
按照 app\reducers\index.ts
中的注释:
As mentioned, we treat each reducer like a table in a database. This means our top level state interface is just a map of keys to inner state types.
在此示例中,interface AuthState
描述了功能模块的状态。
interface State extends fromRoot.State
为您提供有关可从此功能模块访问的完整状态的信息(功能模块状态 + 顶级状态)。同名下,根据不同的特性模块保留不同的信息。这是一个很好的做法。
关于angular - ngrx/strore 示例应用程序,为什么子状态扩展根状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47366774/