离子生命周期取消/订阅 Firebase 数据库流(使用异步管道)
Posted
技术标签:
【中文标题】离子生命周期取消/订阅 Firebase 数据库流(使用异步管道)【英文标题】:Ionic Lifecycle Un-/Subscribe Firebase Databasestreams (using async pipe) 【发布时间】:2021-07-27 11:29:30 【问题描述】:我将 Ionic 5 与 Firebase 实时数据库和 Firestore (angularfire) 以及 Angular 路由一起使用。在大多数页面上,我都在流式传输数据库内容。 由于离子生命周期,离开视图时页面不会被破坏。 就像我在 Angular 中所做的那样,我在 ngOnInit 中声明我的 Observables。
public data$: Observable<Data[]>;
ngOnInit()
this.data$ = this.dataService.retrieveData();
在我的模板中,我使用的是异步管道。
当组件被销毁时,异步管道会自动取消订阅。但是由于 Ionic 生命周期,这在离开视图时不会发生。
问题 1: 在离开视图时保持数据库流打开(并且仅在调用 onNgDestroy 时取消订阅)是一种好习惯吗?
问题 2: 如果首选使用生命周期挂钩(即 ionViewWillEnter、ionViewWillLeave),则无法使用异步管道,因此我必须自己订阅取消订阅。不使用异步管道听起来不合理。这在哪些用例中有意义?
【问题讨论】:
【参考方案1】:问题 1:我认为这是个人考虑。但在大多数情况下,离开页面时保持流打开也没有意义。
问题2:看到Q1,应该用ionViewWillEnter订阅,ionViewWillLeave退订。在这种情况下,异步管道没有意义。
最后我对自己的离子生命周期并不满意。但事实就是如此。
【讨论】:
以上是关于离子生命周期取消/订阅 Firebase 数据库流(使用异步管道)的主要内容,如果未能解决你的问题,请参考以下文章