尝试改进我的应用状态管理,我看了一下ngrx演示应用。
在example-app/app/core/containers/app.component.ts中,组件包含两个在构造函数中初始化的observable。可观察量用
初始化constructor(private store: Store<fromRoot.State>) {
/**
* Selectors can be applied with the `select` operator which passes the state
* tree to the provided selector
*/
this.showSidenav$ = this.store.pipe(select(fromRoot.getShowSidenav));
this.loggedIn$ = this.store.pipe(select(fromAuth.getLoggedIn));
}
我不明白的是,如何在那里使用fromAuth.getLoggedIn。注入的商店是从Root.State键入的。 root-reducer example-app/app/reducers/index.ts与auth-state没有任何关联。身份验证状态example-app/app/auth/reducers/index.ts确实扩展了根状态,所以我理解这些调用auth-state工作,但我不知道它是如何工作的。
答案 0 :(得分:1)
该示例使用一个商店,因此所有功能减少器将其状态存储在根(共享)状态旁边,简单地说,所有减少器和状态都连接到一个单独的源,即商店。
在功能模块文件中查看此行:https://github.com/ngrx/platform/blob/master/example-app/app/auth/auth.module.ts#L36您可以看到它将功能模块reducer导入名称为/v2/logout
的商店,因此auth
会选择一个切片fromAuth.getLoggedIn
州。