没有 subscribe() 就不会触发选择器
Selector not fired without subscribe()
我有两个选择器:
- isLoggedIn -
- 选择用户详细信息
哪个实现看起来像这样:
export const selectAuthState = state => state.auth;
export const isLoggedIn = createSelector(
selectAuthState,
auth => auth.loggedIn
);
export const selectUserDetails = createSelector(
selectAuthState,
auth => auth.userDetails
);
他们的状态是这样的:
export interface State {
loggedIn: boolean,
userDetails: UserDetails
}
export const initialAuthState: State = {
loggedIn: false,
userDetails: undefined
};
我对这行代码有疑问:
ngOnInit() {
this.isLoggedIn$ = this.store.pipe(
select(isLoggedIn)
)
this.userDetails$ = this.store.pipe(
select(selectUserDetails)
)
}
这部分代码没问题:
this.isLoggedIn$ = this.store.pipe(
select(isLoggedIn)
)
但是这个:
this.userDetails$ = this.store.pipe(
select(selectUserDetails)
)
仅在订阅时触发..
this.store.pipe(
select(selectUserDetails),
map(...rest of code)
).subscribe();
在代码的其他部分,如果没有 subscribe(),我也无法使用此 selectUserDetails 选择器。
起初我认为这是未定义变量的问题,但即使用户已登录并且 userDetails 填充在全局状态中,它仍然不会被触发。
为什么?
你确定,你不使用异步管道处理 html 文件中的 isLoggedIn 吗?
我有两个选择器:
- isLoggedIn -
- 选择用户详细信息
哪个实现看起来像这样:
export const selectAuthState = state => state.auth;
export const isLoggedIn = createSelector(
selectAuthState,
auth => auth.loggedIn
);
export const selectUserDetails = createSelector(
selectAuthState,
auth => auth.userDetails
);
他们的状态是这样的:
export interface State {
loggedIn: boolean,
userDetails: UserDetails
}
export const initialAuthState: State = {
loggedIn: false,
userDetails: undefined
};
我对这行代码有疑问:
ngOnInit() {
this.isLoggedIn$ = this.store.pipe(
select(isLoggedIn)
)
this.userDetails$ = this.store.pipe(
select(selectUserDetails)
)
}
这部分代码没问题:
this.isLoggedIn$ = this.store.pipe(
select(isLoggedIn)
)
但是这个:
this.userDetails$ = this.store.pipe(
select(selectUserDetails)
)
仅在订阅时触发..
this.store.pipe(
select(selectUserDetails),
map(...rest of code)
).subscribe();
在代码的其他部分,如果没有 subscribe(),我也无法使用此 selectUserDetails 选择器。 起初我认为这是未定义变量的问题,但即使用户已登录并且 userDetails 填充在全局状态中,它仍然不会被触发。
为什么?
你确定,你不使用异步管道处理 html 文件中的 isLoggedIn 吗?