微信小程序-頁面路由

轉至: https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/route.html

 

頁面路由

在小程序中所有頁面的路由全部由框架進行管理。

頁面棧

框架以棧的形式維護了當前的所有頁面。 當發生路由切換的時候,頁面棧的表現如下:

路由方式 頁面棧表現
初始化 新頁面入棧
打開新頁面 新頁面入棧
頁面重定向 當前頁面出棧,新頁面入棧
頁面返回 頁面不斷出棧,直到目標返回頁
Tab 切換 頁面全部出棧,只留下新的 Tab 頁面
重加載 頁面全部出棧,只留下新的頁面

開發者可以使用 getCurrentPages() 函數獲取當前頁面棧。

路由方式

對於路由的觸發方式以及頁面生命週期函數如下:

路由方式 觸發時機 路由前頁面 路由後頁面
初始化 小程序打開的第一個頁面   onLoad, onShow
打開新頁面 調用 API wx.navigateTo
使用組件 <navigator open-type="navigateTo"/>
onHide onLoad, onShow
頁面重定向 調用 API wx.redirectTo
使用組件 <navigator open-type="redirectTo"/>
onUnload onLoad, onShow
頁面返回 調用 API wx.navigateBack
使用組件<navigator open-type="navigateBack">
用戶按左上角返回按鈕
onUnload onShow
Tab 切換 調用 API wx.switchTab
使用組件 <navigator open-type="switchTab"/>
用戶切換 Tab
  各種情況請參考下表
重啓動 調用 API wx.reLaunch
使用組件 <navigator open-type="reLaunch"/>
onUnload onLoad, onShow

Tab 切換對應的生命週期(以 A、B 頁面爲 Tabbar 頁面,C 是從 A 頁面打開的頁面,D 頁面是從 C 頁面打開的頁面爲例):

當前頁面 路由後頁面 觸發的生命週期(按順序)
A A Nothing happend
A B A.onHide(), B.onLoad(), B.onShow()
A B(再次打開) A.onHide(), B.onShow()
C A C.onUnload(), A.onShow()
C B C.onUnload(), B.onLoad(), B.onShow()
D B D.onUnload(), C.onUnload(), B.onLoad(), B.onShow()
D(從轉發進入) A D.onUnload(), A.onLoad(), A.onShow()
D(從轉發進入) B D.onUnload(), B.onLoad(), B.onShow()

Tips:

  • navigateTo, redirectTo 只能打開非 tabBar 頁面。
  • switchTab 只能打開 tabBar 頁面。
  • reLaunch 可以打開任意頁面。
  • 頁面底部的 tabBar 由頁面決定,即只要是定義爲 tabBar 的頁面,底部都有 tabBar。
  • 調用頁面路由帶的參數可以在目標頁面的onLoad中獲取。

 

生命週期

下圖說明了頁面 Page 實例的生命週期。

Page(Object object)

註冊小程序中的一個頁面。接受一個 Object 類型參數,其指定頁面的初始數據、生命週期回調、事件處理函數等。

參數

Object object

屬性 類型 默認值 必填 說明
data Object     頁面的初始數據
onLoad function     生命週期回調—監聽頁面加載
onShow function     生命週期回調—監聽頁面顯示
onReady function     生命週期回調—監聽頁面初次渲染完成
onHide function     生命週期回調—監聽頁面隱藏
onUnload function     生命週期回調—監聽頁面卸載
onPullDownRefresh function     監聽用戶下拉動作
onReachBottom function     頁面上拉觸底事件的處理函數
onShareAppMessage function     用戶點擊右上角轉發
onAddToFavorites function     用戶點擊右上角收藏
onPageScroll function     頁面滾動觸發事件的處理函數
onResize function     頁面尺寸改變時觸發,詳見 響應顯示區域變化
onTabItemTap function     當前是 tab 頁時,點擊 tab 時觸發
其他 any     開發者可以添加任意的函數或數據到 Object 參數中,在頁面的函數中用 this 可以訪問

 

App(Object object)

註冊小程序。接受一個 Object 參數,其指定小程序的生命週期回調等。

App() 必須在 app.js 中調用,必須調用且只能調用一次。不然會出現無法預期的後果。

參數

Object object

屬性 類型 默認值 必填 說明 最低版本
onLaunch function   生命週期回調——監聽小程序初始化。  
onShow function   生命週期回調——監聽小程序啓動或切前臺。  
onHide function   生命週期回調——監聽小程序切後臺。  
onError function   錯誤監聽函數。  
onPageNotFound function   頁面不存在監聽函數。 1.9.90
onUnhandledRejection function   未處理的 Promise 拒絕事件監聽函數。 2.10.0
onThemeChange function   監聽系統主題變化 2.11.0
其他 any   開發者可以添加任意的函數或數據變量到 Object 參數中,用 this 可以訪問  

 

小程序配置

小程序根目錄下的 app.json 文件用來對微信小程序進行全局配置。文件內容爲一個 JSON 對象

每一個小程序頁面也可以使用 .json 文件來對本頁面的窗口表現進行配置。頁面中配置項在當前頁面會覆蓋 app.jsonwindow 中相同的配置項。

小程序根目錄下的 sitemap.json 文件用於配置小程序及其頁面是否允許被微信索引,文件內容爲一個 JSON 對象,如果沒有 sitemap.json ,則默認爲所有頁面都允許被索引

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章