1.在小程序中路由跳转分为两种方式:
声明式导航和编程式导航。路由导航就是我们在进行路由跳转的时候选择的方式。
2.小程序中的声明式导航:
概念:通过小程序提供的组件navigator 进行路由跳转。想要了解更多关于小程序navigator组件用法的小伙伴,可以点击这里!!!
方式:
2.1 导航到非tabbar页面:
<navigator url="/pages/user/index">
<button>跳转到user主页面</button>
</navigator>
注意:url 属性指定要跳转到的页面路径;其中,页面路径应该以 / 开头,且路径必须提前在 app.json 的 pages 节点下声明,才能实现正常的跳转。
2.2 导航到tabbar页面:
<navigator url="/pages/index/index" open-type="switchTab">
<button>跳转到首页</button>
</navigator>
2.3 后退导航:
<navigator open-type="navigateBack" delta="1">
<button>后退一级</button>
</navigator>
这里的delta的属性值是我们要后退的层级。
3. 小程序中的编程式路由导航:
概念:通过小程序官方提供的API,进行路由跳转。
方式:(5种):
3.1 wx.navigatorTo
保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面
<button bindtap="goUser">跳转到user页面</button>
goUser() {
// 跳转到非tabBar页面
wx.navigateTo({
url: '/pages/user/index',
})
}
3.2 wx.redirectTo
关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面
wx.redirectTo({
url: 'user'
})
3.3 wx.reLaunch
关闭所有页面,打开到应用内的某个页面.
wx.reLaunch()与 wx.redirectTo()的用途基本相同, 只是 wx.reLaunch()先关闭了内存中所有保留的页面,再跳转到目标页面
3.4 wx.switchTab
跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
对于跳转到 tabBar 的页面,最好选择 wx.switchTab(),它会先关闭所有非 tabBar 的页面。其次,也可以选择 wx.reLaunch(),它也能实现从非 tabBar 跳转到 tabBar,或在 tabBar 间跳转,效果等同 wx.switchTab()。使用其他跳转 API 来跳转到 tabBar,则会跳转失败
wx.switchTab({
url:'user'
})
3.5 wx.navigatorBack
wx.navigatorBack({
delta:10
})
关闭当前页面,返回上一页面或多级页面。可通过getCurrentPages 获取当前的页面栈,决定需要返回几层
这个 API 需要填写的参数只有 delta,表示要返回的页面数。若 delta 的取值大于现有可返回页面数时,则返回到用户进入小程序的第一个页面。当不填写 delta 的值时,就默认其为 1(注意,默认并非取 0),即返回上一页面
3.6 在使用编程式导航路由跳转时,参数是一个对象,而对象中一般会有url属性,处理url属性外,还有success,fail,complete ,delta等属性。
success: 路由跳转成功时触发的回调;
fail:路由跳转失败时触发的回调;
complete: 不管路由跳转成功/失败,都会触发的回调。