ion-route-redirect
ルートリダイレクトは、ion-router
の直接の子としてのみ使用できます。
注記: このコンポーネントは、プレーンなJavaScriptおよびStencil JavaScriptプロジェクトでのみ使用してください。Angularプロジェクトの場合は、ion-router-outlet
とAngular Routerを使用してください。
ルートリダイレクトには、2つの設定可能なプロパティがあります。
from
to
これは、「from」のURLから「to」の別のURLにリダイレクトします。定義されたion-route-redirect
ルールが一致すると、ルーターはfrom
プロパティで指定されたパスからto
プロパティのパスにリダイレクトします。リダイレクトが発生するには、from
パスがナビゲーションされたURLと完全に一致する必要があります。
複数のルートリダイレクト
任意の数のリダイレクトルートをion-router
内に定義できますが、一致できるのは1つだけです。
ルートリダイレクトは、無限ループにつながる可能性があるため、自身のリダイレクト後に別のリダイレクトを呼び出すことはありません。
次の2つのリダイレクトを例にとります。
<ion-router>
<ion-route-redirect from="/admin" to="/login"></ion-route-redirect>
<ion-route-redirect from="/login" to="/admin"></ion-route-redirect>
</ion-router>
ユーザーが/admin
に移動すると、ルーターは/login
にリダイレクトし、そこで停止します。複数のリダイレクトは評価されません。
使用方法
<!-- Redirects when the user navigates to `/admin` but
will NOT redirect if the user navigates to `/admin/posts` -->
<ion-route-redirect from="/admin" to="/login"></ion-route-redirect>
<!-- By adding the wilcard character (*), the redirect will match
any subpath of admin -->
<ion-route-redirect from="/admin/*" to="/login"></ion-route-redirect>
ガードとしてのルートリダイレクト
リダイレクションルートは、ユーザーが認証済みかどうかなど、特定の条件に基づいて、アプリケーションの特定の領域への移動を防ぐガードとして機能できます。
ルートリダイレクトは動的に追加および削除して、一部のルートへのアクセスをリダイレクト(またはガード)できます。次の例では、isLoggedIn
がfalse
の場合、すべてのURL*
が/login
URLにリダイレクトされます。
const isLoggedIn = false;
const router = document.querySelector('ion-router');
const routeRedirect = document.createElement('ion-route-redirect');
routeRedirect.setAttribute('from', '*');
routeRedirect.setAttribute('to', '/login');
if (!isLoggedIn) {
router.appendChild(routeRedirect);
}
または、条件に基づいてto
の値を変更することもできます。次の例では、ルートリダイレクトはユーザーがログインしているかどうかを確認し、ログインしていない場合は/login
URLにリダイレクトします。
<ion-route-redirect id="tutorialRedirect" from="*"></ion-route-redirect>
const isLoggedIn = false;
const routeRedirect = document.querySelector('#tutorialRedirect');
routeRedirect.setAttribute('to', isLoggedIn ? undefined : '/login');
プロパティ
from
説明 | リダイレクトルート。「from」のURLから「to」の別のURLにリダイレクトします。このプロパティは、「from」のURLです。適用するには、ナビゲーションされたURLと完全に一致する必要があります。 この値で指定されたパスは、最初のスラッシュ / が指定されていない場合でも、常に絶対パスです。 |
属性 | from |
型 | 文字列 |
デフォルト | undefined |
to
説明 | リダイレクトルート。「from」のURLから「to」の別のURLにリダイレクトします。このプロパティは、「to」のURLです。定義されたion-route-redirect ルールが一致すると、ルーターはこのプロパティで指定されたパスにリダイレクトします。このプロパティの値は、 ion-router で定義されたルートのスコープ内では常に絶対パスであり、別のルーターで使用したり、異なるドメインへのリダイレクトを実行したりすることはできません。これは仮想リダイレクトであることに注意してください。実際のブラウザーのリフレッシュは発生しません。これは、 ion-router のコンテキスト内のリダイレクトです。このプロパティが指定されていない場合、またはその値が undefined の場合、たとえ「from」の値が一致していても、リダイレクトルート全体はnoopになります。 |
属性 | to |
型 | null|文字列|undefined |
デフォルト | undefined |
イベント
名前 | 説明 | バブル |
---|---|---|
ionRouteRedirectChanged | このルールの値がDOMに追加/削除された場合、または公開プロパティのいずれかが変更された場合に発生する内部イベント。ion-router はこのイベントをキャプチャして、ルータールールの内部レジストリを更新します。 | true |
メソッド
このコンポーネントで使用できる公開メソッドはありません。
CSSシャドウパート
このコンポーネントで使用できるCSSシャドウパートはありません。
CSSカスタムプロパティ
このコンポーネントで使用できるCSSカスタムプロパティはありません。
スロット
このコンポーネントで使用できるスロットはありません。