小程序的每个页面都有很多生命周期函数:
onLoad函数用于监听页面加载
onShow用于监听页面显示
onReady用于监听页面初次渲染完成
onHide用于监听页面隐藏
onUnload用于监听页面卸载
当小程序发生页面切换时,跳转前后的两页面都有一些生命周期函数会被调用。具体情况(不包含tabBar)如下:
路由方式 | 路由前页面 | 路由后页面 |
打开小程序 | onLoad,onShow | |
打开新页面 | onHide | onLoad,onShow |
页面返回 | onUnload | onShow |
页面重定向 | onUnload | onLoad,onShow |
重定向 | onUnload | onLoad,onShow |
?当使用wx.switchTab接口切换tabBar页面时,情况很复杂。假设A、B页面为tabBar页面,C是从A页面打开的页面,D是从C打开的页面,E是用户通过转发卡片进入的页面(此时页面栈中只有一个E页面)。tabBar页面切换的各种情况的生命周期函数调用如下表所示:
当前页面 | 路由后页面 | 触发的生命周期情况(按顺序) |
A | A | |
A | B | A.onHide,B.onLoad,B.onShow |
A | B(再次打开) | A.onHide,B.onShow |
C | A | C.unLoad,A.onShow |
C | B | C.unLoad,B.onLoad,B.onShow |
D | B | D.unLoad,C.unLoad,B.onLoad,B.onShow |
E | A | E.unLoad,A.onLoad,A.onShow |