离子 2 或离子 2+ 中的 ngOnInit 与 ionViewDidLoad

ngOnInit vs ionViewDidLoad in ionic 2 or ionic 2+

我将使用哪一个来初始化数据,为什么?

ngOnInit() {
    this.type = 'category';
    this.getData();
    this.setData();
}

ionViewDidLoad() {
    this.type = 'category';
    this.getData();
    this.setData();
}

这两个函数的工作方式相同,它们在视图最初加载到 DOM 时被调用。

有关 ionic2s 生命周期钩子的精彩博客 here

ngOnInit 是由 Angular2 调用的生命周期挂钩,用于指示 Angular 已完成创建组件。

ionViewDidLoad 与 Ionic 的 NavController 生命周期事件有关。它在页面加载后运行。此事件仅在每个创建的页面发生一次。

基本上都是初始化组件数据的好地方。

但要使用 ngOnInit,您需要实施 Angular 的 OnInit class, 另一方面,ionViewDidLoad 只能为来自 NavController 的 pushed/popped 的组件定义。

所以我会说 ionViewDidLoad 用于 NavController 堆栈中的组件,ngOnInit 用于其他组件。

ionViewDidLoad 触发与 NavController 密切相关。

如果您需要一个独立于 NavController 呈现的组件的挂钩(并非 ionic 2 应用程序中的所有组件都是页面),您应该使用 angular lifecycle hooks instead of ionic navcontroller hooks.

现在,哪一个适合你,就看具体的实现案例了。

无论如何,大多数时候所有这些钩子的名称都是不言自明的。