angular - 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 }
]
})
)
所以问题又来了:有没有办法只取一次用户凭证的价值并留下常规行为来检查身份验证?
任何提示都会非常有帮助。谢谢你。
解决方案
我认为在您的情况下,它将永远处于效果循环中,最终会使您的浏览器崩溃。有什么理由让你在AuthActions.TRY_SIGNIN
内部调度一个正在收听的效果AuthActions.TRY_SIGNIN
吗?
推荐阅读
- javascript - Mongoose.js - dont know why my conditional if array is bigger than [0] doesn't work
- powerbi - 如何在 Power-BI 中使用开始和结束日期计算活跃客户?
- c - 什么功能可以清除mac终端上的屏幕?
- python - 从 rmarkdown 中的 r 块调用 matplotlib 时绘图未显示
- java - 构建单词列表处理应用程序的初始版本
- html - 我无法添加 html 分隔线
- node.js - 在 Heroku 中使用 typeorm 时出现意外的令牌“导出”
- php - 语法错误或访问冲突:1140 GROUP 列的混合 (MIN(),MAX(),COUNT(),...)
- azure - 在 Azure 上托管 ClickOnce 的问题
- macros - notepad++ 如何将两个宏分配给同一个键?