angular - 将 RXJS do() 迁移到 tap()
问题描述
我有一个使用 RXJS 6 进行身份验证的 Angular 应用程序。我已经安装了 rxjs-compat,所以下面的代码仍然有效。但我想学习如何重构代码。
auth$ = this.af.authState
.do(next => {
if (!next) {
this.store.set('user', null);
return;
}
const user: User = {
email: next.email,
uid: next.uid,
authenticated: true
};
this.store.set('user', user);
});
我能够使用文档更新我的应用程序,将每个运算符包装在一个 pipe() 中,这有点整洁,但我注意到我没有在我的商店中更新 Authstate。因此,经过一番研究,我在这里找到了 ggradnig的参考资料。
我尝试在管道之后添加订阅,并且能够通过控制台注销,但我无法弄清楚如何获得身份验证:true 来触发。这是我忘记发布的不返回身份验证的 tap() 版本。
auth$ = this.af.authState
.pipe(
tap(next => {
if (!next) {
this.store.set('user', null);
return;
}
const user: User = {
email: next.email,
uid: next.uid,
authenticated: true
};
this.store.set('user', user);
})
)
解决方案
推荐阅读
- r - 有没有办法根据 R 中的这些标题生成具有多个非唯一标题和置换列的表?
- node.js - Azure SWA 函数错误:针对包 Youtube-dl 的 EACCES 命令失败
- java - 使用 Jsoup 从 URL 中提取部分内容
- css - 仅当我使用 ctrl+p 进行打印时如何打印某些类
- flutter - 如何生成三个唯一项目,其中一个与问题的答案匹配?
- blockchain - 需要帮助将资产从以太坊转移到币安链以在 MetaMask 上收回美元
- yarnpkg - Yarn & Monorepo:防止使用本地包
- python - 在交叉期间保持基因组的稀疏性 - GA
- python - 如何使用python创建循环移位矩阵
- google-cloud-platform - 用于创建 Firestore 文档的 GCP EventArc 触发器仅限于特定集合?