什么先运行-构造函数或ionView ...?

时间:2019-01-31 10:34:47

标签: ionic-framework ionic3 page-lifecycle

在Ionic框架中,首先运行的是构造函数或ionViewDidEnter?这样可以保证吗?

构造函数和其他每个事件页面生命周期事件如何?是否可以肯定构造函数或任何离子页面生命周期事件将首先运行?

1 个答案:

答案 0 :(得分:1)

constructor()方法不是Ionic的功能,而是ES6类(在大多数情况下为Typescript)的功能。因此,Ionic框架不会调用构造函数方法,而是由javascript引擎负责调用构造函数。所以, 这是启动页面时触发的第一个生命周期事件。

现在回答您的问题

在Ionic框架中,首先运行的是构造函数还是ionViewDidEnter?这样可以保证吗?

如果页面未加载到内存中,则始终是第一个被调用的构造方法。随后是Ionic提供的其他生命周期事件(请参见下面粘贴的图片以了解事件的顺序)。

如果页面已被加载到内存中,则不会调用构造函数。 在这种情况下,ionViewCanEnter将是第一个被触发的事件,然后ionViewWillEnter甚至将被触发,然后ionViewDidEnter事件将被触发。

注意:仅将页面加载到内存(如构造函数)时,ionViewDidLoad才会触发一次

下一个问题,

构造函数与其他每个事件页面生命周期事件如何?是否可以肯定构造函数或任何离子页面生命周期事件将首先运行?

正如我之前提到的,如果尚未加载页面,则始终会首先调用构造函数。如果已经加载,则不会调用该构造函数。

下图显示了离子页面生命周期事件的顺序。

enter image description here

对每个事件的解释。

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/