1.微信小程序生命周期分类:
- 应用生命周期
- 页面生命周期
- 组件生命周期
2.小程序的应用生命周期
onLaunch: 初始化小程序时触发,全局只触发一次
onShow: 小程序初始化完成 或 用户从后台切换到前台时触发
onHide: 用户从前台 切换到 后台时触发
onError: 小程序发生脚本错误时 或 API调用失败时,会触发,并会带上错误的信息
// app.js
App({
onLaunch: function() {
// 监听小程序初始化
console.log("app onLaunch")
},
onShow: function() {
// 监听小程序显示
console.log("app onShow")
},
onHide: function() {
// 监听小程序隐藏 从前台切换到后台时触发
console.log("app onHide")
},
onError: function(){
// 错误监听函数
console.log("app onError")
},
globalData:{
// globalData是全局变量
// 1. 在app.js中 使用 that.globalData 直接访问
// 2. 在别的页面则先获取应用实例 const app = getApp(), 然后通过 app.globalData 访问
userInfo:null
}
})
3.页面生命周期
// 在pages文件中的js页面
Page({
data: {},
onLoad: function (options) {
// 首次进入页面加载时触发,一个页面只会调用一次
// 可以在 onLoad 的参数中获取打开当前页面路径中的参数 options
console.log("page onLoad")
},
onShow: function () {
// 页面首次渲染完成时触发
// 后台切到前台
// 重新进入页面时触发
console.log("page onShow")
},
onReady: function () {
// 页面首次渲染完成时触发,后台切前台不会触发
console.log("page onReady")
},
onHide: function () {
// 从前台切到后台或进入其他页面触发
// 进入其他页面不关闭会触发,使用 wx.navigateTo 会触发
console.log("page onHide")
},
onUnload: function () {
// 页面卸载时触发,使用 wx.redirectTo 会触发,使用 wx.navigateTo 不会触发
console.log("page onUnload")
},
onPullDownRefresh: function () {
// 监听用户下拉动作(可以用来做下拉刷新功能)
},
onReachBottom: function () {
// 页面上拉触底事件的处理函数(用来做下拉加载更多功能)
},
onShareAppMessage: function () {
// 用户点击右上角转发
}
// onPageScroll: 页面滚动触发事件的处理函数
// onResize: 页面尺寸发生改变时触发。
// onTabItemTap: 当前是tab页时,点击tab时触发。
})
4.应用及页面生命周期的触发顺序
(第一次打开一个页面时触发顺序如下)
app onLaunch (只触发一次)
app onShow
page onLoad
page onShow
page onReady
(前台切后台)
page onHide
app onHide
(后台切前台)
app onShow
page onShow
(使用 wx.navigateTo:不关闭原来页面,打开一个新的页面)
page onHide ( 原来的页面触发)
page onLoad (新的页面触发)
page onShow (新的页面触发)
page onReady (新的页面触发)
(使用 wx.redirectTo:关闭原来页面,打开一个新的页面)
page onUnload (原来的页面触发)
page onLoad (新的页面触发)
page onShow (新的页面触发)
page onReady (新的页面触发)
5.onLoad,onReady,onShow,onHide 的区别
onLoad: 页面加载时触发,且只发生一次,有些数据实时性要求不高可以onlaod里面触发对应的请求
onReady:页面初次渲染之后触发,一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互
onShow: 定义是页面显示,切入前台触发,可以理解为页面出现一次,他就被调用一次包括你前进后退到这个页面,适合有些实时性的数据,例如订单列表数据
onHide: 切换页面的时候你就会发现该函数被调用,这个页面切换到别的页面就会触发(注意切换不是关闭)