首页 > 解决方案 > NgRx 调度动作生效并采取一个(?)

问题描述

我试图在一个效果中调度两个动作。一种用于用户用户身份验证(类似于 isAuthenticated = true),另一种用于设置用户(将来可能会从 rest 响应返回用户数据),因此我有两个单独的存储,一个用于用户,一个用于身份验证。一切都很好,因为动作正在调度问题是它们被一次又一次地调度,这是常规行为,但由于 SET_USER 动作应用程序崩溃了一段时间。有没有办法只取一次用户凭证的价值并留下常规行为来检查身份验证?这是代码片段:

@Effect()
authSignin = this.actions$
    .pipe(
        ofType(AuthActions.TRY_SIGNIN),
        map((action: AuthActions.TrySignin) => {
            console.log('AuthEffects -> authSignin');
            return action.payload;
        }),
        switchMap((data: any) => {
            this.router.navigate(['/student']);
            const user: User = {
                id: '1',
                firstName: 'John',
                lastName: 'Doe',
                pesel: '19827364',
                dateOfBirth: new Date(),
                address: 'Canada, where clone syrup is made',
                phoneNumber: '14 2345 345'
            }
            return [
                { type: AuthActions.TRY_SIGNIN },
                { type: UserActions.SET_USER, payload: user }
            ]
        })
    )

所以问题又来了:有没有办法只取一次用户凭证的价值并留下常规行为来检查身份验证?

任何提示都会非常有帮助。谢谢你。

标签: angularreduxstatengrx

解决方案


我认为在您的情况下,它将永远处于效果循环中,最终会使您的浏览器崩溃。有什么理由让你在AuthActions.TRY_SIGNIN内部调度一个正在收听的效果AuthActions.TRY_SIGNIN吗?


推荐阅读