组件生命周期

组件的主要生命周期

解释:自定义组件的生命周期,指的是组件自身的一些可自执行的方法,这些方法会在特殊的时间点或遇到一些特殊页面行为时被自动触发而执行。

组件的生命周期:created 、 attached 、 ready 、 detached ,这些方法包含了一个组件实例生命流程的主要时间点,具体的使用场景如下:

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

定义生命周期方法

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

除了以上声明方式,还可以在 lifetimes 字段内进行声明(推荐使用这种方式进行管理,其优先级最高)。

代码示例

  1. // 自定义组件js文件
  2. Component({
  3. // ...
  4. lifetimes: {
  5. attached: function() {
  6. // 在组件实例进入页面节点树时执行
  7. },
  8. detached: function() {
  9. // 在组件实例被从页面节点树移除时执行
  10. }
  11. }
  12. // ...
  13. });

在内置 behaviors 中也可以编写生命周期方法,但不会与其他 behaviors 中的同名生命周期相互覆盖。

当前自定义组件可用的全部生命周期及其描述如下表所示:

生命周期参数描述最低版本
created在组件实例刚刚被创建时执行1.10.13
attached在组件实例进入页面节点树时执行1.10.13
ready在组件在视图层布局完成后执行1.10.13
detached在组件实例被从页面节点树移除时执行1.10.13
onInitObject页面路由携带的参数对象【仅在使用 Component 构造器构造页面时有效】在组件页面初始化时执行,与 Page.onInit 使用方法一致,参见在 onInit 请求首屏主数据3.260.6
onLoadObject页面路由携带的参数对象【仅在使用 Component 构造器构造页面时有效】在组件页面加载后执行1.10.13

组件所在页面的生命周期

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

生命周期参数描述最低版本
show组件所在的页面被展示时执行1.10.13
hide组件所在的页面被隐藏时执行1.10.13

代码示例

  1. // 自定义组件js文件
  2. Component({
  3. // ...
  4. pageLifetimes: {
  5. show: function() {
  6. // 组件所在的页面被展示时触发
  7. },
  8. hide: function() {
  9. // 组件所在的页面被隐藏时触发
  10. }
  11. }
  12. // ...
  13. });