微信小程序组件生命周期和页面生命周期

一、组件的生命周期

1.1 组件的生命周期

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

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

  • created触发时机:组件实例刚刚被创建好时。

此时,组件数据 this.data 就是在 Component 构造器中定义的数据 data 。 此时还不能调用 setData 。 通常情况下,这个生命周期只应该用于给组件 this 添加一些自定义属性字段。

  • attached触发时机: 在组件完全初始化完毕、进入页面节点树后,

this.data 已被初始化为组件的当前值。这个生命周期很有用,绝大多数初始化工作可以在这个时机进行。

  • detached触发时机:在组件离开页面节点树后。

退出一个页面时,如果组件还在页面节点树中,则 detached 会被触发。

全部的组件生命周期:

生命周期 参数 描述 最低版本
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

1.2 如何定义组件的生命周期

  • (1)放在lifetimes函数里面。(优先级高)
  • (2)无lifetimes函数,直接定义在 Component 构造器的第一级参数中。
Component({
  lifetimes: {
    attached: function() {
      // 在组件实例进入页面节点树时执行
    },
    detached: function() {
      // 在组件实例被从页面节点树移除时执行
    },
  },
  // 以下是旧式的定义方式,可以保持对 <2.2.3 版本基础库的兼容
  attached: function() {
    // 在组件实例进入页面节点树时执行
  },
  detached: function() {
    // 在组件实例被从页面节点树移除时执行
  },
  // ...
})

1.3 组件所在页面的生命周期

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

生命周期 参数 描述 最低版本
show 组件所在的页面被展示时执行 2.2.3
hide 组件所在的页面被隐藏时执行 2.2.3
resize Object Size 组件所在的页面尺寸变化时执行 2.4.0
Component({
  pageLifetimes: {
    show: function() {
      // 页面被展示
    },
    hide: function() {
      // 页面被隐藏
    },
    resize: function(size) {
      // 页面尺寸变化
    }
  }
})

二、页面生命周期

页面的生命周期直接再Page的第一级参数里定义。而组件的生命周期可以在lifetimes中定义也可以在Component的第一级参数里面定义。

页面生命周期函数有 onLoad、onShow、onReady、onHide、onUnload

onLoad:页面创建时执行
onShow:页面出现在前台时执行
onReady:页面首次渲染完毕时执行
onHide:页面从前台变为后台时执行
onUnload:页面销毁时执行

你可能感兴趣的:(微信小程序,前端,javascript)