问题描述
我在下面有这个效果,当我得到我需要的令牌时它执行得很好。但它并没有启动新的效果 newUserRequested
我是 Ngrx 的新手,正在苦苦思索如何连接 effects
。
@Effect({dispatch: false})
login$ = this.actions$.pipe(
ofType<Login>(AuthActionTypes.Login),switchMap(action => {
console.log(action.payload)
localStorage.setItem(`access_token`,action.payload.accesstoken);
localStorage.setItem(`refresh_token`,action.payload.refreshToken);
return of(new UserRequested());
}),);
@Effect({dispatch: false})
loadUser$ = this.actions$
.pipe(
ofType<UserRequested>(AuthActionTypes.UserRequested),tap(res => console.log('user requested',res)),withLatestFrom(this.store.pipe(select(isUserLoaded))),filter(([action,_isUserLoaded]) => !_isUserLoaded),mergeMap(([action,_isUserLoaded]) => {
return this.auth.getUserFromToken()
.pipe(
catchError(err => {
of(new AuthError({error: err}));
return EMPTY;
}),switchMap(user => {
if (user) {
const jsonConvert: JsonConvert = new JsonConvert();
const authUser: AuthUser = jsonConvert.deserializeObject(user,AuthUser);
console.log(authUser)
return of(new UserLoaded({user: authUser}));
}
})
)
}));
初始化效果
@Effect()
init$: Observable<Action> = defer(() => {
const aToken = localStorage.getItem('access_token');
const rToken = localStorage.getItem('refresh_token');
if (aToken) {
return of(new Login({accesstoken: aToken,refreshToken: rToken}));
} else {
return of({type: 'NO_ACTION'});
}
});
我的效果还好吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)