框架以栈的形式维护了当前的所有页面。
页面栈当发生路由切换的时候,页面栈的表现如下:属性类型初始化新页面入栈打开新页面新页面入栈页面重定向当前页面出栈,新页面入栈页面返回页面不断出栈,直到目标返回页Tab切换页面全部出栈,只留下新的Tab页面重加载页面全部出栈,只留下新的页面
getCurrentPages()getCurrentPages()函数用于获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。
路由方式下面是路由的控制接口:路由方式触发时机路由前页面路由后页面初始化小程序打开的第一个页面onLoad,onShow打开新页面调用APItt.navigateTo或使用组件navigatoropen-type=navigateTo/onHideonLoad,onShow页面重定向调用APItt.redirectTo或使用组件navigatoropen-type=redirectTo/onUnloadonLoad,onShow页面返回调用APItt.navigateBack或使用组件navigatoropen-type=navigateBack或用户按左上角返回按钮onUnloadonShowTab切换调用APItt.switchTab或使用组件navigatoropen-type=switchTab/或用户切换Tab各种情况请参考下表重启动调用APItt.reLaunch或使用组件navigatoropen-type=reLaunch/onUnloadonLoad,onShowTab切换对应的生命周期(以A、B页面为Tabbar页面,C是从A页面打开的页面,D页面是从C页面打开的页面为例):当前页面路由后页面触发的生命周期(按顺序)AANothinghappendABA.onHide(),B.onLoad(),B.onShow()AB(再次打开)A.onHide(),B.onShow()CAC.onUnload(),A.onShow()CBC.onUnload(),B.onLoad(),B.onShow()DBD.onUnload(),C.onUnload(),B.onLoad(),B.onShow()D(从转发进入)AD.onUnload(),A.onLoad(),A.onShow()D(从转发进入)BD.onUnload(),B.onLoad(),B.onShow()
Tips:navigateTo,redirectTo只能打开非tabBar页面。switchTab只能打开tabBar页面。reLaunch可以打开任意页面。页面底部的tabBar由页面决定,即只要是定义为tabBar的页面,底部都有tabBar。调用页面路由带的参数可以在目标页面的onLoad中获取。了解更多