# Router
基礎庫 2.16.1 開始支持,低版本需做兼容處理。
頁面路由器對象??梢酝ㄟ^ this.pageRouter 或 this.router 獲得當前頁面或自定義組件的路由器對象。
# 路由的相對路徑
頁面路由器有 switchTab reLaunch redirectTo navigateTo navigateBack 五個方法,與 wx 對象向同名的五個方法 switchTab reLaunch redirectTo navigateTo navigateBack 功能相同;唯一的區(qū)別是,頁面路由器中的方法調(diào)用時,相對路徑永遠相對于 this 指代的頁面或自定義組件。
例如,對于下面這段示例代碼:
// index/index.js
Page({
wxNavAction: function () {
wx.navigateTo({
url: './new-page'
})
},
routerNavAction: function () {
this.pageRouter.navigateTo({
url: './new-page'
})
}
})
頁面 index/index 的 js 代碼如上所示。如果此時已經(jīng)跳轉(zhuǎn)到了一個新頁面 pack/index ,然后才調(diào)用到上面的 wxNavAction 方法,跳轉(zhuǎn)的新頁面路徑將是 pack/new-page ;而如果調(diào)用的是 routerNavAction 方法,跳轉(zhuǎn)的新頁面路徑仍然是 index/new-page 。
換而言之, this.pageRouter 獲得的路由器對象具有更好的基路徑穩(wěn)定性。通常情況下,使用 this.pageRouter.navigateTo 代替 wx.navigateTo 是更優(yōu)的。
# 相對于自定義組件路徑的路由
this.pageRouter 和 this.router 在頁面中將獲得同樣的頁面路由器對象。
但如果在自定義組件中調(diào)用, this.pageRouter 將相對于自定義組件所在的頁面來進行路由跳轉(zhuǎn),而 this.router 相對于自定義組件自身的路徑。