组件生命周期

最近更新时间:2024-03-21 15:51:52

我的收藏

组件主要生命周期

组件的生命周期,指的是组件自身的一些函数,这些函数在特殊的时间点或遇到一些特殊的框架事件时被自动触发。
其中,最重要的生命周期是createdattacheddetached,包含一个组件实例生命流程的最主要时间点。
组件实例刚刚被创建好时,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) {
// 页面尺寸变化
}
}
})