Ionic 页面生命周期
本指南将介绍在使用 Ionic 和 Angular 构建的应用中,页面生命周期是如何工作的。

Angular 生命周期事件
Ionic 充分利用了 Angular 提供的生命周期事件。您最常使用的两个 Angular 事件是:
| 事件名称 | 描述 |
|---|---|
ngOnInit | 在组件初始化期间触发一次。此事件可用于初始化本地成员并调用仅需执行一次的服务。 |
ngOnDestroy | 在 Angular 销毁视图之前触发。适用于清理操作,例如取消订阅可观察对象。 |
有关 Angular 组件生命周期事件的更多信息,请参阅他们的组件生命周期文档。
备注
使用 ion-nav 或 ion-router-outlet 的组件不应使用 OnPush 变更检测策略。这样做会阻止诸如 ngOnInit 之类的生命周期钩子触发。此外,异步状态更改可能无法正确渲染。
Ionic 页面事件
除了 Angular 生命周期事件外,Ionic Angular 还提供了一些额外的事件供您使用:
| 事件名称 | 描述 |
|---|---|
ionViewWillEnter | 当即将路由到的组件要动画进入视图时触发。 |
ionViewDidEnter | 当即将路由到的组件已完成动画进入时触发。 |
ionViewWillLeave | 当即将路由离开的组件准备开始动画时触发。 |
ionViewDidLeave | 当即将路由离开的组件已完成动画离开时触发。 |
这些生命周期仅在直接由路由器映射的组件上调用。这意味着如果 /pageOne 映射到 PageOneComponent,那么 Ionic 生命周期将在 PageOneComponent 上调用,但不会在 PageOneComponent 可能渲染的任何子组件上调用。
ionViewWillEnter 和 ionViewDidEnter 的区别在于它们的触发时机。前者在 ngOnInit 之后、页面过渡开始之前触发,而后者在过渡结束后立即触发。
对于 ionViewWillLeave 和 ionViewDidLeave,ionViewWillLeave 在离开当前页面的过渡开始之前立即调用,而 ionViewDidLeave 要等到新页面成功过渡进入后(即新页面的 ionViewDidEnter 触发后)才会调用。
