微信小程序开发过程中,很重要的一个就是路由,毕竟有很多跳转的地方是需要使用到路由,小程序中路由就是页面路由,在小程序中所有页面的路由全部由框架进行管理。
提到小程序路由就不得不讲一个页面栈,框架以栈的形式维护了当前的所有页面。 当发生路由切换的时候,页面栈的表现如下:
查看当前页面栈实例getCurrentPages() 函数用于获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。
注意:
不要尝试修改页面栈,会导致路由以及页面状态错误。
不要在 App.onLaunch 的时候调用 getCurrentPages(),此时 page 还没有生成。
这个函数就是查看当前页面栈的信息,而且只能看不能修改。
一、路由方式
对于路由的触发方式以及页面生命周期函数如下:
1、打开新页面
调用 API wx.navigateTo 或使用组件 <navigator>。通常就是正常的打卡新页面,相当于网页上a链接。打开新页面有两种方式可以,基本上所有的路方式都有两种方式。
Api实例如下:
<view>
<button>打开新页面/<button>
/<view>
业务代码如下:
Page({
openNew:function(){
wx.navigateTo({
url: '../test/test'
})
}
})
效果如下:
组件打开新页面
<view>
<navigator>打开新页面/<navigator>
/<view>
2、页面重定向
调用 API wx.redirectTo 或使用组件 <navigator>。页面重定向后是无法返回上一个页面的。
api实例如下:
openNew:function(){
wx.redirectTo({
url: '../test/test'
});
}
效果如下:
组件方式
<view>
<navigator>打开新页面/<navigator>
/<view>
3、页面返回
调用 API wx.navigateBack 或使用组件<navigator>或用户按左上角返回按钮。这个一般用的比较少毕竟左上角有返回按钮。/<navigator>
实例如下:
<button>返回上一页/<button>
<navigator>返回上一页/<navigator>
业务代码如下:
// pages/test/test.js
Page({
backBefore: function() {
wx.navigateBack({
url: '../index/index'
});
}
})
效果如下:
4、Tab 切换
调用 API wx.switchTab 或使用组件 <navigator> 或用户切换 Tab。这个主要就是用于tab页的切换就是tabbar的切换,顶部菜单切换。
实例如下:
<view>
<button>tab切换/<button>
<navigator>tab切换/<navigator>
/<view>
业务代码如下:
//index.js
//获取应用实例
const app = getApp()
Page({
openTab:function(){
wx.switchTab ({
url: '../logs/logs'
});
}
})
效果如下:
5、重启动
调用 API wx.reLaunch 或使用组件 <navigator>。重启动和页面重定向类似,不同的是重启动会关闭所有页面在打开目标页面。
实例如下:
<button>重启动logs页面/<button>
<navigator>重启动logs页面/<navigator>
业务代码如下:
// pages/test/test.js
Page({
backBefore: function() {
wx.reLaunch({
url: '../logs/logs'
});
}
})
效果如下:
注意:
閱讀更多 程序猿肸哥 的文章