【发布时间】:2017-12-29 22:58:02
【问题描述】:
您能告诉我Ionic 3 应用程序中的Component 和Page 生成器有什么区别吗?看来我也可以在组件内部使用像ionViewWillLeave 这样的页面生命周期钩子。那么我什么时候应该使用角度生命周期钩子呢?如果相同,那么为什么它有 2 个发电机?希望您对此提供反馈。
组件生成器:
ionic generate component SubscribeTopicComponent
页面生成器:
ionic generate page LoginPage
【问题讨论】:
-
从 Angular 的角度来看可能是一样的,但是在 Ionic 中 Pages 和 Components 有不同的含义。 两者都只是组件,但 Page 是一个组件,它将充当整个视图(它可能具有嵌套组件);我们将 Ionic 页面视为一个独立的概念。 component 在 Angular 应用程序中大部分时间只是更大组件的一部分,所以我想这是与 Pages 最大的区别。
-
关于使用 Angular 的生命周期钩子时,我喜欢在组件中使用它们,但在处理页面时我更喜欢 Ionic 生命周期钩子。主要是因为
ionViewWillEnter在一个简单的组件内部没有太大意义,而ngOnInit则可以。我还在页面上使用了一些 Angular 生命周期钩子,例如ngOnDestroy(当页面被销毁时,我使用它从页面中删除所有订阅)。我不确定这是否是使用它们的最佳方式,但我想这是有道理的...... -
是的,
ionViewWillLeave()清除订阅事件呢?这不好吗? @sebaferreras -
这是不对的,因为那个钩子意味着用户正在离开页面,但并不是说页面会被破坏,从而留下一些内存泄漏 .由于 Ionic 缓存页面,如果您使用
ionViewWillLeave您可以清理订阅,并且下次用户访问该页面时(如果它已被缓存,因此不会再次创建)与这些订阅相关的代码不会被执行。 -
非常感谢 :) 就像你说的
ionViewWillUnload似乎是进行清理的正确位置(出于某种原因,我不知道那个钩子)。而且你对缓存场景是正确的,如果你使用离子挂钩来创建订阅,你也可以使用离子挂钩来清理它。这完全取决于您想在什么特定时间(钩子)做某事。
标签: angular typescript ionic-framework ionic2 ionic3