在小程序開發中,頁面導航是實現用戶流暢交互體驗的關鍵環節。今天,咱們就一起來深入學習小程序里通過聲明式導航實現頁面跳轉、切換 tab 頁、后退等功能的技巧,還會附上詳細代碼示例,讓大家輕松掌握!
一、什么是頁面導航
頁面導航,簡單來說,就是實現頁面之間相互跳轉的技術。在瀏覽器中,我們常用 a 鏈接或者調用 JavaScript 的location.href API 來完成頁面跳轉。而在小程序里,實現頁面導航主要有兩種方式:聲明式導航和編程式導航。
聲明式導航,就是在頁面上聲明一個navigator導航組件,通過點擊這個組件來實現頁面跳轉。編程式導航則是調用小程序提供的導航 API 來實現跳轉。今天咱們重點探討聲明式導航的具體應用。
二、通過聲明式導航跳轉到 tab 頁面
(一)tab 頁面的概念
tab 頁面指的是被配置為 tab bar 的那些頁面。比如在當前項目中,配置了首頁、消息、聯系這三個頁面作為 tab 頁面。接下來,我們就看看如何從一個頁面跳轉到這些 tab 頁面。
(二)實現步驟及代碼示例
要通過聲明式導航跳轉到 tab 頁面,需要借助navigator組件,并指定url屬性和open-type屬性。url屬性表示要跳轉到的頁面地址,必須以斜線根路徑開頭;open-type屬性表示跳轉方式,若要跳轉到 tab bar 對應的頁面,其值必須等于switchTab。
假設我們要在首頁點擊一個鏈接跳轉到消息頁面,代碼如下:
<navigator url="/pages/message/message" open-type="switchTab">導航到消息頁面
</navigator>
在實際操作時,url
路徑可以從app.json
文件中查找對應頁面的路徑,然后手動在前面加上斜線。如果忘記聲明open-type
屬性及其對應值,或者url
地址不以斜線開頭,都無法成功跳轉。
三、通過聲明式導航跳轉到非 tab 頁面
(一)非 tab 頁面的定義
非 tab 頁面就是沒有被配置為 tab bar 的頁面。例如,我們在項目中新建一個info
頁面,且不將其配置為 tab 頁面,那么它就是非 tab 頁面。
(二)實現方式及代碼演示
同樣使用navigator
組件,指定url
屬性和open-type
屬性。url
屬性依舊指定跳轉地址,以斜線開頭;open-type
屬性的值要等于navigate
。代碼如下:
<navigator url="/pages/info/info" open-type="navigate">導航到info頁面
</navigator>
在實際開發中,還有個小技巧:導航到非 tab 頁面時,open-type="navigate"
這個屬性可以省略不寫,只指定url
屬性也能正常導航到非 tab 頁面。
四、通過聲明式導航實現后退效果
(一)后退導航的屬性設置
如果希望后退到上一頁面或后退多個頁面,需要為navigator組件指定open-type屬性和delta屬性。open-type的值必須等于navigateBack,表示進行后退導航;delta屬性的值是一個整數,表示要后退的層級數 。
比如,在頁面上聲明一個返回上一頁的按鈕,代碼如下:
<navigator open-type="navigateBack" delta="1">返回上一頁
</navigator>
(二)簡化操作
如果只是后退到上一個頁面,delta
屬性可以省略,因為其默認值為 1。只需要指定open-type="navigateBack"
,就能實現后退一個頁面的效果。