一、微信小程序以栈的形式维护了当前的所有页面, 当发生路由切换的时候,页面栈的表现如下
初始化:新页面入栈
打开新页面:新页面入栈
页面重定向 :当前页面出栈,新页面入栈;
页面返回:页面不断出栈,直到目标返回页
Tab 切换:页面全部出栈,只留下新的 Tab 页面
重加载:页面全部出栈,只留下新的tab页面
(可以使用wx.getCurrentPages)获取当前栈
二、不同的路由方式的页面申明周期函数触发
navigateTo, redirectTo 只能打开非 tabBar 页面。
switchTab 只能打开 tabBar 页面。
reLaunch 可以打开任意页面。
页面底部的 tabBar 由页面决定,即只要是定义为 tabBar 的页面,底部都有 tabBar。
调用页面路由带的参数可以在目标页面的onLoad中获取。
1;wx.navigateTo(Object object)
保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面。使用 wx.navigateBack 可以返回到原页面。小程序中页面栈最多十层。
参数
2;x.redirectTo(Object object)
关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面。
wx.redirectTo({
url: ‘test?id=1’
})
3:wx.navigateBack(Object object)
wx.navigateTo({
url: ‘C?id=1’
})
// 在C页面内 navigateBack,将返回A页面
wx.navigateBack({
delta: 2
})
4:wx.switchTab(Object object)
跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
wx.switchTab({
url: ‘/index’
})