1. 前言
上小节我们讲了 uni-app 路由的跳转方式,有些同学可能还有一些疑问。同样是跳转到新的页面,uni.navigateto,uni.redirectTo 这些方法可以互相代替吗?每种跳转方式的区别又是什么呢?
2. 什么是页面栈?
要搞清楚页面栈概念,我们首先要了解“栈”是什么意思,在学习数据结构的时候,我们应该都了解过,栈是一种连续储存的数据结构,具有先进后出的性质。
但这样说还是有点抽象,我们可以将栈想象成一个开口的盒子,将书一本一本的放进盒子中,先放进去的书总是会被后放进去的书压在下面,这就是进栈的过程。那如果想拿出底部的书,需要先将顶部的书(也就是后放进的书)一本一本的拿出来,这是出栈的过程。这样解释栈的先进后出的性质就比容易理解了。
为了便于大家理解,我们来看一下示意图:
那每次跳转页面时,页面栈是怎样变化的呢?下面我们来分析一下使用各种跳转方式页面栈的变化过程。
我们可以用 getCurrentPages()
方法来验证,getCurrentPages()
方法可以获取当前页面栈的实例,展现页面栈中页面存储的情况,返回的结果是数组形式。数组的第一个元素为初始化页面,数组的最后一个元素为当前页面。
3.1 初始化
打印的结果:
3.2 打开新页面
3.3 页面返回
当调用 API uni.navigateBack
、使用组件 <navigator open-type="navigateBack"/>
或者点击浏览器左上角的返回按钮,还有点击安卓物理back按键,都会进行页面返回,返回到上一级页面。
3.5 Tab 切换
当调用 API uni.switchTab
、使用组件 <navigator open-type="switchTab"/>
、点击 Tab 页面切换,就会进行 Tab 切换。这时所有的页面都会从页面栈内删除,只留下新的 Tab 页面。
3.6 重加载
Tips: