离子生命周期取消/订阅 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 数据库流(使用异步管道)的主要内容,如果未能解决你的问题,请参考以下文章

react的生命周期

离子 - Routerlink 不触发生命周期事件

离子中的组件生命周期

Vue生命周期

Vue生命周期

Firebase 和 Vue Js 生命周期钩子