所以我开始使用 NGXS,我在通过 Redux Devtools 检查我的商店时遇到了一些困难
NGXS 具有与Redux Devtools Extension集成的devtools 包。
我已经安装了最新版本的包 (^3.2.0) 并将其导入AppModule
导入:
imports: [
NgxsModule.forRoot([ProjectState, AuthState], {developmentMode: true}),
...
NgxsReduxDevtoolsPluginModule.forRoot(),
]
在我的 上AuthState
,我做了:
export class AuthState implements NgxsOnInit {
constructor(private auth: AuthService) {}
ngxsOnInit({dispatch}: StateContext<AuthStateModel>) {
console.log('State initialized, now getting auth');
dispatch(CheckAuthSession);
}
@Action(CheckAuthSession)
checkSession({patchState}: StateContext<AuthStateModel>) {
return this.auth.user$.pipe(
tap((user) => patchState({initialized: true, user: user})),
);
}
当我在谷歌浏览器上打开控制台时,我确实得到了这条线
console.log('State initialized, now getting auth')
并加载了 Auth 属性。虽然,在 Redux Devtools 上,我只看到:
如你看到的:
- 操作
CheckAuthSession
未发送 auth.initialized
false
即使我控制台记录它仍然存在,它是true
.
奇怪的是,当我调度一个新动作时,扩展确实提到了它,并且状态更改为动作之前的状态。我不确定这是否是正确的行为。
更新 1
当我在in方法take(1)
之前添加管道时,它以某种方式起作用。我不知道为什么。tap
checkSession