组件主要生命周期
组件的生命周期,指的是组件自身的一些函数,这些函数在特殊的时间点或遇到一些特殊的框架事件时被自动触发。
其中,最重要的生命周期是
created
、attached
、detached
,包含一个组件实例生命流程的最主要时间点。组件实例刚刚被创建好时,
created
生命周期被触发。此时,组件数据this.data
就是在Component
构造器中定义的数据data
。此时还不能调用setData
。通常情况下,这个生命周期只应该用于给组件 this 添加一些自定义属性字段。在组件完全初始化完毕、进入页面节点树后,
attached
生命周期被触发。此时,this.data
已被初始化为组件的当前值。这个生命周期很有用,绝大多数初始化工作可以在这个时机进行。在组件离开页面节点树后,
detached
生命周期被触发。退出一个页面时,如果组件还在页面节点树中,则detached
会被触发。定义生命周期方法
生命周期方法可以直接定义在
Component
构造器的第一级参数中。组件的生命周期也可以在
lifetimes
字段内进行声明(这是推荐的方式,其优先级最高)。代码示例:
Component({lifetimes: {attached() {// 在组件实例进入页面节点树时执行},detached() {// 在组件实例被从页面节点树移除时执行},},// 以下是旧式的定义方式attached() {// 在组件实例进入页面节点树时执行},detached() {// 在组件实例被从页面节点树移除时执行},// ...})
在
behaviors
中也可以编写生命周期方法,同时不会与其他behaviors
中的同名生命周期相互覆盖。注意:
如果一个组件多次直接或间接引用同一个
behavior
,这个behavior
中的生命周期函数在一个引用时机内只会执行一次。可用的全部生命周期如下表所示:
生命周期 | 参数 | 描述 |
created | 无 | 在组件实例刚刚被创建时执行 |
attached | 无 | 在组件实例进入页面节点树时执行 |
ready | 无 | 在组件在视图层布局完成后执行 |
moved | 无 | 在组件实例被移动到节点树另一个位置时执行 |
detached | 无 | 在组件实例被从页面节点树移除时执行 |
error | Object Error | 每当组件方法抛出错误时执行 |
组件所在页面的生命周期
还有一些特殊的生命周期,它们并非与组件有很强的关联,但有时组件需要获知,以便组件内部处理。这样的生命周期称为“组件所在页面的生命周期”,在
pageLifetimes
定义段中定义。其中可用的生命周期包括:生命周期 | 参数 | 描述 |
show | 无 | 组件所在的页面被展示时执行 |
hide | 无 | 组件所在的页面被隐藏时执行 |
resize | Object Size | 组件所在的页面尺寸变化时执行 |
代码示例:
Component({pageLifetimes: {show() {// 页面被展示},hide() {// 页面被隐藏},resize(size) {// 页面尺寸变化}}})