微信小程序生命周期函数(内置钩子函数)
1:应用生命周期
生命周期 | 说明 |
---|---|
onLaunch | 小程序初始化完成时触发,全局只触发一次 |
onShow | 小程序启动或从后台进入前台时(页面显示) |
onHide | 小程序从前台进入后台时(页面隐藏) |
onError | 小程序发生错误脚本或API调用报错时 |
onPageNotFound | 小程序要打开的页面不存在时 |
onUnhandledRejection | 小程序有未处理的Promise拒绝时 |
onThemeChange | 系统切换主题时 |
2:页面生命周期
生命周期 | 说明 | 作用 |
---|---|---|
onLoad | 监听页面加载 | 发送请求数据 |
onShow | 监听页面显示 | 请求数据 |
onReady | 监听页面初次渲染 | 获取页面元素(少用) |
onHide | 监听页面隐藏 | 终止任务,如定时器或播放器 |
onUnload | 监听页面卸载 | 终止任务 |
3:组件生命周期
生命周期 | 说明 |
---|---|
created | 监听组件加载 |
attached | 监听组件显示 |
ready | 监听组件初次渲染完成 |
moved | 监听组件隐藏 |
datached | 监听组件卸载 |
error | 每当组件方法抛出错误时 |
注意
- 组件实例刚刚被创建好时,created函数被触发,此时组件数据this.data就是在Component构造器中定义的数据data,不能调用this.setData
- 在组件完全初始化完毕、进入页面节点树后,attached函数被触发。此时this.data已被初始化为组件的当前值。这个生命周期很有用,绝大多数初始化工作可以在这个时进行
- 在组件离开页面节点树后,datached函数被触发。退出一个页面时,如果组件还在页面节点树中,则datached会被触发
执行过程
应用的生命周期执行过程:
- 用户首次打开小程序时,触发onLaunch(全局只触发一次)
- 小程序初始化完成后,触发onSHow,监听小程序显示
- 小程序从前台切到后台,触发onHide
- 小程序从后台切到前台,触发onShow
- 小程序运行一定时间或系统资源占用过高时会被销毁
页面生命周期执行过程:
- 小程序注册完成后,加载页面触发onLoad
- 页面载入后触发onShow,显示页面
- 首次显示页面会触发onReady方法,渲染页面元素和样式,一个页面只会调用一次
- 当小程序后台运行或跳转其他页面时,触发onHide
- 当小程序由后台切换到前台或重新进入页面时,触发onShow
- 当使用重定向方法wx.redirectTo()或关闭当前页返回上一页wx.navigateBack(),触发onUnload
常见生命周期执行顺序
1.打开小程序:(App)onLaunch --> (App)onShow --> (Pages)onLoad --> (Pages)onShow --> (pages)onRead
2.进入下一个页面:(Pages)onHide --> (Next)onLoad --> (Next)onShow --> (Next)onReady
3.返回上一个页面:(curr)onUnload --> (pre)onShow
4.离开小程序:(App)onHide
5.再次进入:小程序未销毁 --> (App)onShow(执行上面的顺序),小程序被销毁,(App)onLaunch重新开始执行.