微信小程序路由跳转及页面栈学习


一、wx.navigateTo跟uni.redirectTo方法跳转比较     1、过程:A->(wx.navigateTo)->B-(wx.redirectTo)->C 解析:     A -> B通过 wx.navigateTo 跳转   B -> C 通过 wx.redirectTo 跳转.跳转触发后 B 页面就会被销毁, C 页面再返回 wx.navigateBack 就会直接到 A 了   2、过程:A ->(wx.navigateTo)-> B->(wx.navigateTo) -> C 返回效果C -> B -> A   正常 A -> B -> C 都是通过 wx.navigateTo 跳转的,所以 wx.navigateBack 只能返回上一界面         二、详细解析wx.navigateTo跟wx.navigateBack跳转页面栈关系 1、过程:A-(navigateTo)->B-(navigateTo)->C 解析: A-(navigateTo)->B 这个时候B页面的页面堆栈为[A,B] B-(navigateTo)->C 这个时候B页面的页面堆栈为[A,B,C] 合起来:A-(navigateTo)->B-(navigateTo)->C 页面堆栈为[A,B,C]     2、过程:C-(navigateBack)->B-(navigateBack)->A 解析: C-(navigateBack)->B 这个时候B页面的页面堆栈为[A,B] B-(navigateTo)->A 这个时候B页面的页面堆栈为[A] 合起来:C-(navigateBack)->B-(navigateBack)->A 页面堆栈为[A]     三、总结 1、wx.navigateTo 不会将旧页面出栈,会将新页面入栈。(栈内元素个数增加,栈内元素10个时,不能再跳转) 2、wx.redirectTo 会将栈顶的旧页面出栈(跳转会销毁当前页面栈),再将需要跳转到的页面入栈(栈内元素个数不变); 3、wx.navigateBack 则是将页面栈最后一个元素出栈,因此倒数第二个元素会成为最后一个元素,即变成当前页面; 也可以连续出栈好几个元素(大于栈内元素的个数则返回首页)返回栈中的某个页面。 4、wx.switchTab跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面 5、wx.reLaunch,关闭所有页面,打开到应用内的某个页面 6、我们可以通过使用getCurrentPages()方法获取当前页面信息栈,从而进行学习总结运用 提醒:我们在做项目的时候,巧妙运用路由跳转和页面栈会节省很多代码,用户体验也会得到相应的提升,所以,在开始项目之前,定好页面跳转规则相当重要。

相关