微信小程序组件初始化的生命周期

528 阅读2分钟

一、组件的生命周期

1.created

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

2.attached

触发时机: 在组件完全初始化完毕、进入页面节点树后。 this.data 已被初始化为组件的当前值。这个生命周期很有用,绝大多数初始化工作可以在这个时机进行。

3.detached

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

全部的组件生命周期:

image.png

二、如何定义组件的生命周期

1.放在lifetimes函数里面。(优先级高)

2.无lifetimes函数,直接定义在 Component 构造器的第一级参数中。

自定义组件Component:

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

三、组件所在页面的生命周期

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

image.png

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

四、页面生命周期

onLoad:页面创建时执行

onShow:页面出现在前台时执行

onReady:页面首次渲染完毕时执行

onHide:页面从前台变为后台时执行

onUnload:页面销毁时执行