小程序页面路由【仟亿科技】-欧洲杯买球app
在小程序中所有页面的路由全部由框架进行管理。
页面栈
框架以栈的形式维护了当前的所有页面。 当发生路由切换的时候,页面栈的表现如下:
路由方式 | 页面栈表现 |
---|
初始化 | 新页面入栈 |
打开新页面 | 新页面入栈 |
页面重定向 | 当前页面出栈,新页面入栈 |
页面返回 | 页面不断出栈,直到目标返回页,新页面入栈 |
tab 切换 | 页面全部出栈,只留下新的 tab 页面 |
重加载 | 页面全部出栈,只留下新的页面 |
getcurrentpages()
getcurrentpages()
函数用于获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为欧洲杯买球app首页,最后一个元素为当前页面。
tip:不要尝试修改页面栈,会导致路由以及页面状态错误。
路由方式
对于路由的触发方式以及页面生命周期函数如下:
路由方式 | 触发时机 | 路由前页面 | 路由后页面 |
---|
初始化 | 小程序打开的第一个页面 |
| onload, onshow |
打开新页面 | 调用 api wx.navigateto 或使用组件
| onhide | onload, onshow |
页面重定向 | 调用 api wx.redirectto 或使用组件
| onunload | onload, onshow |
页面返回 | 调用 api wx.navigateback 或使用组件 或用户按左上角返回按钮 | onunload | onshow |
tab 切换 | 调用 api wx.switchtab 或使用组件 或用户切换 tab |
| 各种情况请参考下表 |
重启动 | 调用 api wx.relaunch 或使用组件
| onunload | onload, onshow |
tab 切换对应的生命周期(以 a、b 页面为 tabbar 页面,c 是从 a 页面打开的页面,d 页面是从 c 页面打开的页面为例):
当前页面 | 路由后页面 | 触发的生命周期(按顺序) |
---|
a | a | nothing happend |
a | b | a.onhide(), b.onload(), b.onshow() |
a | b(再次打开) | a.onhide(), b.onshow() |
c | a | c.onunload(), a.onshow() |
c | b | c.onunload(), b.onload(), b.onshow() |
d | b | d.onunload(), c.onunload(), b.onload(), b.onshow() |
d(从转发进入) | a | d.onunload(), a.onload(), a.onshow() |
d(从转发进入) | b | d.onunload(), b.onload(), b.onshow() |
tips:
navigateto
, redirectto
只能打开非 tabbar 页面。
switchtab
只能打开 tabbar 页面。
relaunch
可以打开任意页面。
页面底部的 tabbar 由页面决定,即只要是定义为 tabbar 的页面,底部都有 tabbar。
调用页面路由带的参数可以在目标页面的onload
中获取。