小程序路由篇


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

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

getCurrentPages()

getCurrentPages() 函數用於獲取當前頁面棧的實例,以數組形式按棧的順序給出,第一個元素為首頁,最后一個元素為當前頁面。

路由方式 觸發時機 路由前頁面 路由后頁面
初始化 小程序打開的第一個頁面 onLoad, onShow
打開新頁面 調用 API wx.navigateTo onHide onLoad, onShow
頁面重定向 調用 API wx.redirectTo onUnload onLoad, onShow
頁面返回 調用 API wx.navigateBack 或用戶按左上角返回按鈕 onUnload onShow
Tab 切換 調用 API wx.switchTab 或用戶切換 Tab 各種情況具體看
重啟動 調用 API wx.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()
  • navigateTo, redirectTo 只能打開非 tabBar 頁面。
  • switchTab 只能打開 tabBar 頁面。
  • reLaunch 可以打開任意頁面。
  • 調用頁面路由帶的參數可以在目標頁面的onLoad中獲取。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM