跳至主要內容
版本:v8

ion-router

路由器是一個用於處理原生和 Stencil JavaScript 專案內部路由的元件。

注意

注意:這個元件只應該與原生和 Stencil JavaScript 專案一起使用。請參閱 AngularReactVue 的路由指南,以取得特定框架的路由解決方案。

應用程式在程式碼庫中應該只有一個 ion-router 元件。這個元件會控制與瀏覽器歷史記錄的所有互動,並且透過事件系統匯總更新。

ion-router 只是 ionic 的導覽出口 (ion-navion-tabsion-router-outlet) 的 URL 協調器。

這表示 ion-router 永遠不會接觸 DOM,它不會顯示元件或發出任何類型的生命週期事件,它只會根據瀏覽器的 URL 告訴 ion-navion-tabsion-router-outlet 何時以及要「顯示」什麼。

為了設定元件(載入/選取)和 URL 之間的這種關係,ion-router 使用宣告式語法,並使用 JSX/HTML 來定義路由樹狀結構。

基本用法

介面

RouterEventDetail

interface RouterEventDetail {
from: string | null;
redirectedFrom: string | null;
to: string;
}

RouterCustomEvent

雖然不是必需的,但這個介面可以用來取代 CustomEvent 介面,以便更嚴格地使用從這個元件發出的 Ionic 事件類型。

interface RouterCustomEvent extends CustomEvent {
detail: RouterEventDetail;
target: HTMLIonRouterElement;
}

用法

<ion-router>
<ion-route component="page-tabs">
<ion-route url="/schedule" component="tab-schedule">
<ion-route component="page-schedule"></ion-route>
<ion-route url="/session/:sessionId" component="page-session"></ion-route>
</ion-route>

<ion-route url="/speakers" component="tab-speaker">
<ion-route component="page-speaker-list"></ion-route>
<ion-route url="/session/:sessionId" component="page-session"></ion-route>
<ion-route url="/:speakerId" component="page-speaker-detail"></ion-route>
</ion-route>

<ion-route url="/map" component="page-map"></ion-route>
<ion-route url="/about" component="page-about"></ion-route>
</ion-route>

<ion-route url="/tutorial" component="page-tutorial"></ion-route>
<ion-route url="/login" component="page-login"></ion-route>
<ion-route url="/account" component="page-account"></ion-route>
<ion-route url="/signup" component="page-signup"></ion-route>
<ion-route url="/support" component="page-support"></ion-route>
</ion-router>

屬性

root

描述在比對 URL 時要使用的根路徑。預設情況下,這個值設定為 "/",但您可以為所有 URL 路徑指定替代字首。
屬性root
類型字串
預設值'/'

useHash

描述路由器可以在兩種「模式」下運作: - 使用雜湊:/index.html#/path/to/page - 不使用雜湊:/path/to/page

使用哪一種可能會取決於您的應用程式需求和/或部署位置。

通常「無雜湊」導覽對於 SEO 效果更好,而且也更方便使用者使用,但是可能需要額外的伺服器端設定才能正常運作。

另一方面,雜湊導覽更容易部署,甚至可以在檔案通訊協定上運作。

預設情況下,這個屬性為 true,將其變更為 false 以允許無雜湊 URL。
屬性use-hash
類型布林值
預設值true

事件

名稱描述冒泡
ionRouteDidChange當路由變更時發出true
ionRouteWillChange當路由即將變更時發出的事件true

方法

back

描述返回視窗歷史記錄中的上一個頁面。
簽名back() => Promise<void>

push

描述導覽至指定的路徑。
簽名push(path: string, direction?: RouterDirection, animation?: AnimationBuilder) => Promise<boolean>

CSS Shadow Parts

這個元件沒有可用的 CSS shadow parts。

CSS 自訂屬性

這個元件沒有可用的 CSS 自訂屬性。

插槽

這個元件沒有可用的插槽。