angular - 离子生命周期取消/订阅 Firebase 数据库流(使用异步管道)
问题描述
我将 Ionic 5 与 Firebase 实时数据库和 Firestore (angularfire) 以及 Angular Routing 一起使用。在大多数页面上,我都在流式传输数据库内容。由于离子生命周期,离开视图时页面不会被破坏。正如我在 Angular 中所做的那样,我在 ngOnInit 中声明了我的 Observables。
public data$: Observable<Data[]>;
ngOnInit() {
this.data$ = this.dataService.retrieveData();
在我的模板中,我使用的是异步管道。
当组件被销毁时,异步管道将自动取消订阅。但是由于离子生命周期,离开视图时不会发生这种情况。
问题 1: 离开视图时保持数据库流打开是一种好习惯(并且仅在调用 onNgDestroy 时取消订阅)?
问题 2: 如果更喜欢使用生命周期钩子(即 ionViewWillEnter、ionViewWillLeave),则无法使用异步管道,所以我必须自己订阅和取消订阅。不使用异步管道听起来不合理。这在哪些用例中有意义?
解决方案
问题1:我认为这是个人考虑。但在大多数情况下,离开页面时保持流打开也没有意义。
问题2:看到Q1,你应该使用ionViewWillEnter订阅和ionViewWillLeave取消订阅。在这种情况下,异步管道没有意义。
最后,我对自己的离子生命周期并不满意。但事实就是这样。
推荐阅读
- excel - ISNUMBER (MATCH) 不断显示虚假陈述
- ios - 使用静态单元格推送 UITableViewController 时出现断断续续的动画
- types - 定义(不分配)自定义类型的变量
- react-native - Expo cli中的Managed和Advanced工作流程有什么区别
- java - 在 GAE 标准上自定义 jackson bind 抛出的异常
- c++ - 当飞机沿偏航或俯仰或滚动旋转时,飞机上的 opengl 相机显示震动的世界
- java - 如何在 MyBatis 中 foreach 数组
- python - How to set selenium webdriver from headless mode to normal mode within the same session?
- java - Play框架控制器中的重定向不起作用
- django - 良好的 Django 设计实践,稍后在 DRY 之后添加 REST api