在Ionic框架中,首先运行的是构造函数或ionViewDidEnter?这样可以保证吗?
构造函数和其他每个事件页面生命周期事件如何?是否可以肯定构造函数或任何离子页面生命周期事件将首先运行?
答案 0 :(得分:1)
constructor()方法不是Ionic的功能,而是ES6类(在大多数情况下为Typescript)的功能。因此,Ionic框架不会调用构造函数方法,而是由javascript引擎负责调用构造函数。所以, 这是启动页面时触发的第一个生命周期事件。
现在回答您的问题
在Ionic框架中,首先运行的是构造函数还是ionViewDidEnter?这样可以保证吗?
如果页面未加载到内存中,则始终是第一个被调用的构造方法。随后是Ionic提供的其他生命周期事件(请参见下面粘贴的图片以了解事件的顺序)。
如果页面已被加载到内存中,则不会调用构造函数。 在这种情况下,ionViewCanEnter将是第一个被触发的事件,然后ionViewWillEnter甚至将被触发,然后ionViewDidEnter事件将被触发。
注意:仅将页面加载到内存(如构造函数)时,ionViewDidLoad才会触发一次
下一个问题,
构造函数与其他每个事件页面生命周期事件如何?是否可以肯定构造函数或任何离子页面生命周期事件将首先运行?
正如我之前提到的,如果尚未加载页面,则始终会首先调用构造函数。如果已经加载,则不会调用该构造函数。
下图显示了离子页面生命周期事件的顺序。
对每个事件的解释。
ionViewCanEnter
此事件是进入视图(页面)之前触发的离子导航卫士,可让您控制视图是否可以 是否可以访问(返回true或false)。如果页面已被加载到内存中,这将是第一个要触发的事件。否则,将在构造方法之后触发此方法。
ionViewDidLoad
仅在视图存储在内存中时触发。此事件未触发 输入已缓存的视图。构造函数和IonViewDidLoad之间的区别在于,构造函数应尽可能的薄,这意味着您只应初始化类的变量。这是因为调用REST API并在构造函数中初始化数据会导致应用程序的创建速度变慢,因为创建对象需要时间。而在ionViewDidLoad事件中,您可以确保注入的所有变量和依赖项都可以使用,并且它也是进行REST API调用和初始化数据的好地方。
ionViewWillEnter
进入活动页面之前触发该事件 一。您可以将此事件用于每次必须完成的任务 进入视图时(例如:更新表)。
ionViewDidEnter
在进入活动页面后进入页面时触发。
ionViewCanLeave
该事件也是类似ionViewCanEnter的导航守护程序。此事件被解雇了 在离开视图之前,可以控制视图是否可以 是否离开。
ionViewWillLeave
离开页面时会触发此事件。在此阶段,您的页面是 仍处于活动状态,但已排队等待删除,并且 您将无法再阻止该页面过渡。
ionViewDidLeave
在此状态下,页面已变为非活动状态。重要的是要注意 在下一页的ionViewDidEnter之后将触发此事件 已经开除。您可以使用此方法保存可以 再次访问此页面时使用(仅当不访问该页面时 摧毁)。
ionViewDidUnload
在视图将被完全删除时触发(离开 非缓存视图)。此方法可用于释放资源 不再需要
引用:https://blog.ionicframework.com/navigating-lifecycle-events/