【问题标题】:Ionic 4 : ngOnInit vs ionViewWillEnter离子 4:ngOnInit 与 ionViewWillEnter
【发布时间】:2019-06-15 03:59:22
【问题描述】:
在使用 Ionic 4 创建混合应用程序时,使用 Angular Lifecycle Hook 或 Ionic Lifecycle Hook 专门用于初始化哪个更好?
Angular 生命周期钩子 - ngOnInit
ngOnInit() {
this.getData();
}
离子生命周期挂钩 - ionViewWillEnter
ionViewWillEnter() {
this.getData();
}
【问题讨论】:
标签:
angular
ionic-framework
ionic4
angular-lifecycle-hooks
【解决方案1】:
我正在开发一个显示 WordPress 帖子的 Ionic4 应用程序>
【解决方案2】:
如果你使用
ngOnInit()
然后 API 数据无法正确加载
并且值没有更新,所以我强烈推荐
ionViewWillEnter()
【解决方案3】:
ngOnInit
在组件初始化期间触发一次。此事件可用于初始化本地成员并调用只需要执行一次的服务。
ionViewWillEnter
【解决方案4】:
在 Ionic 4 中,生命周期事件与角度生命周期事件相同。
Ionic 3 生命周期事件在这里不起作用。
对于初始化,您必须使用
ngOnInit()
如果你想在视图初始化之后,
请更改
ionviewwillenter
到
ngAfterViewInit()
这会很好用。
【解决方案5】:
Ionic 4 migration guide 是这样说的:
有了 V4,我们现在可以利用由 V4 提供的典型事件
角。但在某些情况下,您可能希望访问
当组件在其路由期间完成动画时触发的事件
改变。在这种情况下,ionViewWillEnter、ionViewDidEnter、
ionViewWillLeave 和 ionViewDidLeave 已从 V3 移植过来。
使用这些事件与 Ionic 自己的动画协调动作
系统。
所以底线是如果可能的话,更喜欢 Angular 生命周期钩子,比如 ngOnInit。唯一真正的例外是处理 Ionics 动画系统,例如检查组件是否已完成进入动画。
【解决方案6】:
ionViewWillEnter — 进入页面时触发(如果它从堆栈返回)
ngOnInit不会被触发,如果你把一个页面放入堆栈后返回
我认为一旦 ionviewwillenter
会更好