0
点赞
收藏
分享

微信扫一扫

微信小程序学习笔记——自定义组件 属性和组件的生命周期


组件中的属性 

组件生命周期

组件的生命周期,指的是组件自身的一些函数,这些函数在特殊的时间点或遇到一些特殊的框架事件时被自动触发。

其中,最重要的生命周期是 ​​created​​​ ​​attached​​​ ​​detached​​ ,包含一个组件实例生命流程的最主要时间点。

  • 组件实例刚刚被创建好时, ​​created​​​ 生命周期被触发。此时,组件数据 ​​this.data​​​ 就是在 ​​Component​​​ 构造器中定义的数据 ​​data​​ 。 此时还不能调用 setData 。 通常情况下,这个生命周期只应该用于给组件 ​​this​​ 添加一些自定义属性字段。
  • 在组件完全初始化完毕、进入页面节点树后, ​​attached​​​ 生命周期被触发。此时, ​​this.data​​ 已被初始化为组件的当前值。这个生命周期很有用,绝大多数初始化工作可以在这个时机进行。
  • 在组件离开页面节点树后, ​​detached​​​ 生命周期被触发。退出一个页面时,如果组件还在页面节点树中,则 ​​detached​​ 会被触发。

定义段

类型

是否必填

描述

created

Function


组件生命周期函数,在组件实例刚被创建时执行,注意此时不能调用setData

attached

Function


组件生命周期函数,在组件实例进入页面节点树时执行,注意此时可以调用setData

ready

Function


组件生命周期函数,在组件布局完成后执行

moved

Function


组件生命周期函数,在组件实例被移动到节点树另一个位置时执行

detached

Function


组件生命周期函数,在组件实例被从页面节点树移除时执行

定义生命周期方法

生命周期方法可以直接定义在 ​​Component​​ 构造器的第一级参数中。

自小程序基础库版本 ​​2.2.3​​​ 起,组件的的生命周期也可以在 ​​lifetimes​​ 字段内进行声明(这是推荐的方式,其优先级最高)。

代码示例:

Component({
lifetimes: {
attached: function() {
// 在组件实例进入页面节点树时执行
},
detached: function() {
// 在组件实例被从页面节点树移除时执行
},
},
// 以下是旧式的定义方式,可以保持对 <2.2.3 版本基础库的兼容
attached: function() {
// 在组件实例进入页面节点树时执行
},
detached: function() {
// 在组件实例被从页面节点树移除时执行
},
// ...
})

在 behaviors 中也可以编写生命周期方法,同时不会与其他 behaviors 中的同名生命周期相互覆盖。但要注意,如果一个组件多次直接或间接引用同一个 behavior ,这个 behavior 中的生命周期函数在一个执行时机内只会执行一次。

可用的全部生命周期如下表所示。

生命周期

参数

描述

最低版本

created


在组件实例刚刚被创建时执行

​​1.6.3​​

attached


在组件实例进入页面节点树时执行

​​1.6.3​​

ready


在组件在视图层布局完成后执行

​​1.6.3​​

moved


在组件实例被移动到节点树另一个位置时执行

​​1.6.3​​

detached


在组件实例被从页面节点树移除时执行

​​1.6.3​​

error

​Object Error​

每当组件方法抛出错误时执行

​​2.4.1​​

组件所在页面的生命周期

还有一些特殊的生命周期,它们并非与组件有很强的关联,但有时组件需要获知,以便组件内部处理。这样的生命周期称为“组件所在页面的生命周期”,在 ​​pageLifetimes​​ 定义段中定义。其中可用的生命周期包括:

生命周期

参数

描述

最低版本

show


组件所在的页面被展示时执行

​​2.2.3​​

hide


组件所在的页面被隐藏时执行

​​2.2.3​​

resize

​Object Size​

组件所在的页面尺寸变化时执行

​​2.4.0​​

代码示例:

Component({
pageLifetimes: {
show: function() {
// 页面被展示
},
hide: function() {
// 页面被隐藏
},
resize: function(size) {
// 页面尺寸变化
}
}
})

举报

相关推荐

0 条评论