小程序生命周期
一、小程序生命周期分为哪几类?
小程序里常见有两种生命周期:
- App 生命周期(整个小程序)
- Page 生命周期(页面)
二、App 生命周期(整个小程序)
写在 app.js里面
onLaunch:
触发时机:小程序初始化完成时(全局只触发一次)
常用场景:获取用户信息、登录、全局数据初始化onShow:
触发时机:小程序启动或从后台进入前台时
常用场景:刷新数据、检查更新onHide:
触发时机:小程序从前台进入后台时
常用场景:暂停定时器、保存数据onError:
触发时机:小程序发生脚本错误时
常用场景:错误监控和上报onPageNotFound:
触发时机:页面不存在时
常用场景:路由重定向、404处理
三、页面生命周期(Page)
页面生命周期指的是小程序中每个页面的生命周期过程。这些钩子函数定义在Page()方法中。
onLoad:
触发时机:页面加载时(只触发一次)
常用场景:接收参数、数据初始化、网络请求onShow
触发时机:页面显示时(每次进入都触发)
常用场景:刷新数据、更新状态onReady
触发时机:页面初次渲染完成时(只触发一次)
常用场景:获取节点信息、创建动画onHide
触发时机:页面隐藏时(跳转或切后台)
常用场景:暂停音视频、停止定时器onUnload
触发时机:页面卸载时(关闭页面)
常用场景:释放资源、清理监听onPullDownRefresh
触发时机: 用户下拉刷新时
常用场景:刷新列表数据onReachBottom
触发时机: 页面滚动到底部时
常用场景:加载更多数据onShareAppMessage
触发时机: 用户点击分享时
常用场景:自定义分享内容onPageScroll
触发时机: 页面滚动时
常用场景:导航栏渐变、返回顶部按钮onResize
触发时机: 页面尺寸变化时(仅手机)
常用场景:横竖屏适配
四、常见问题与解决方案
- onLoad 和 onShow 区别
onLoad:页面首次加载时触发,只触发一次,适合做数据初始化
onShow:每次页面显示都触发,包括首次和从后台切回 - 页面返回为什么不执行 onLoad?
因为页面没有销毁,只是隐藏了。所以返回时只触发 onShow - onReachBottom 不触发怎么办?
// 检查以下几点Page({// 1. 检查页面高度是否足够滚动// 2. 检查是否设置了距离底部阈值onReachBottomDistance:100,// 距离底部100px时触发// 3. 检查是否有内容撑开页面// 4. 使用 scroll-view 组件时需要设置 scroll-y 和 bindscrolltolower})- 如何监听页面返回?
// 方案1:使用 onShowPage({onShow(){// 每次页面显示都会触发,包括从下级页面返回}})// 方案2:使用页面栈和事件constpages=getCurrentPages();constcurrentPage=pages[pages.length-1];// 在下级页面调用上级页面方法currentPage.setData({needRefresh:true});- 页面首次进入会经历的生命周期
页面首次进入: onLoad ↓ onShow ↓ onReady 页面跳转离开: onHide 页面关闭: onUnload