一、应用生命周期
小程序从启动 -> 运行 -> 销毁的过程
应用生命周期函数
应用生命周期函数在 app.js 中声明,执行顺序如下
- onLaunch(小程序初始化完成时触发,全局只触发一次,先于所有页面周期函数执行)
- onShow(小程序启动,或从后台进入前台显示时触发,先于所有页面周期函数执行)
- onHide(小程序从前台进入后台显示时触发)
- onError(小程序发生脚本错误或 API 调用报错时触发)
- onPageNotFound(小程序要打开的页面不存在时触发)
- onUnhandledRejection(小程序有未处理的 Promise 拒绝时触发)
- onThemeChange(系统切换主题时触发)
二、页面生命周期
每个页面加载 -> 渲染 -> 销毁的过程
页面生命周期函数
页面生命周期函数在页面的 .js 文件中声明,执行顺序如下
-
onLoad(页面创建时执行,一个页面生命周期中只调用一次,可接收一个object参数,里面包含用
wx.navigateTo()
打开该页面时拼接在url中的参数,常用于初始化,转存数据)①是打开小程序就展示的的页面时执行
②是被其他页面调用
wx.navigateTo
打开的页面时执行③是被调用
wx.switchTab
初次打开的页面时执行 -
onShow(页面出现在前台时执行)
-
onReady(页面首次渲染完毕时执行,监听页面初次渲染完成,一个页面生命周期中只调用一次,可在此函数中修改页面内容,如调用wx.setNavigationBarTitle)
①是打开小程序就展示的的页面时执行
②是被其他页面调用
wx.navigateTo
打开的页面时执行③是被调用
wx.switchTab
初次打开的页面时执行 -
onHide(页面没有被关闭,只是从前台变为后台时执行)
①普通页面使用
wx.navigateTo
切换到其他页面时执行②tabBar 页面使用
wx.switchTab
切换到其他页面时执行 -
onUnload(页面销毁时执行,一个页面生命周期中只调用一次)
-
onPullDownRefresh(触发下拉刷新时执行)
-
onReachBottom(页面触底时执行)
-
onShareAppMessage(页面被用户分享时执行)
-
onPageScroll(页面滚动时执行)
-
onResize(页面尺寸变化时执行)
-
onTabItemTap(当前是 tabBar 页时,点击 tab 时触发,如果使用了自定义tabbar,则不会触发。可接收一个object参数,其中包含所点击的 tab 的 index、pagePath、text等数据)
注:
①调用wx.switchTab
时(只能跳转到 tabBar 页面),关闭其他所有非 tabBar 页面,既所有非 tabBar 未关闭页面执行onUnload
②调用 wx.reLaunch
时,所有未关闭页面都会关闭(包括当前页),既所有未关闭页执行 onUnload
③ 调用 wx.redirectTo
时(只能跳转到非 tabBar 页面),当前页被关闭,当前页执行 onUnload
④ 调用 wx.navigateTo
时,保存当前页(使用 wx.navigateBack
可以返回),跳转到应用内的某个页面。但是不能跳到 tabbar 页面,当前页执行 onHide
⑤调用 wx.navigateBack
(返回上一页面或多级页面)时,当前页(包含当前页)到目标页之间所有出栈页都被关闭,执行onUnload