本文将从多个方面对微信小程序页面生命周期进行详细阐述,旨在帮助开发者更好地理解小程序页面的生命周期并掌握使用方法。
一、生命周期介绍
微信小程序页面生命周期分为四个部分,分别是:页面加载时、页面渲染时、页面显示时和页面隐藏时。其中,页面加载时和页面渲染时是必须执行的流程,而页面显示时和页面隐藏时则是在小程序页面切换时才会触发。
小程序页面生命周期中的各个函数执行顺序如下:
onLoad() —> onShow() —> onReady() —> onHide() —> onUnload()
下面将对各个函数进行详细阐述。
二、onLoad()
onLoad()函数会在页面加载时执行,且只执行一次。
其中,可以通过 options 获取打开小程序页面时所传入的参数。示例如下:
Page({
onLoad: function (options) {
console.log(options.id) // 打印:123
}
})
在此函数中可以进行一些数据初始化的工作。如下面的代码,在 onLoad() 函数中对页面的一些参数进行初始化。
Page({
data: {
title: '页面标题',
list: []
},
onLoad: function () {
this.setData({
list: ['a', 'b', 'c']
})
}
})
三、onShow()
onShow()函数在页面显示时执行,包括从后台进入前台,返回当前页面和切换标签栏等情况。
onShow() 函数的执行顺序在 onLoad() 之后。因此,如果在 onLoad() 函数中有异步操作,可以在 onShow() 中获取结果然后进行处理。
下面的示例中,当用户在新闻详情页面点击右上角分享按钮时,会回到新闻列表页面,并重新获取最新的新闻列表数据。
Page({
data: {
newsList: []
},
onLoad: function () {
this.getData() // 异步获取新闻列表数据
},
onShow: function () {
this.setData({
newsList: wx.getStorageSync('newsList')
})
}
})
四、onReady()
onReady()函数在页面渲染完成时执行,且只执行一次。
页面渲染完成后,可以进行一些其他的操作,例如动画的初始化和定位的获取等。
下面的代码中,当页面渲染完成后,通过 createAnimation() 函数创建一个动画实例。
Page({
onReady: function () {
this.animation = wx.createAnimation({
duration: 1000,
timingFunction: 'linear'
})
}
})
五、onHide()
onHide()函数在页面隐藏时执行,包括跳转到新页面、点击了底部 tab 栏之类的情况。
在 onShow() 函数执行之后,onHide() 函数就会立即执行。
下面的示例中,在用户退出新闻详情页面时,会关闭音频播放器。
Page({
onHide: function () {
wx.stopBackgroundAudio()
}
})
六、onUnload()
onUnload()函数在页面卸载时执行,一般在页面被销毁前执行,例如用户关闭了当前小程序页面。
与 onLoad() 函数类似,onUnload() 函数也只会执行一次。
下面的示例中,当用户退出新闻详情页面时,对页面进行清理操作,例如清除参与的事件监听器等。
Page({
onUnload: function () {
clearTimeout(this.data.timer) // 清除定时器
wx.offAccelerometerChange() // 取消加速度计事件监听
}
})
七、总结
本文对微信小程序页面生命周期进行了详细的介绍,涵盖了 onLoad()、onShow()、onReady()、onHide() 和 onUnload() 等函数的使用和示例,希望能够对开发者有所帮助。