跳至主要内容
版本:v8

ion-route-redirect

路由重定向只能与作为其直接子元素的 ion-router 一起使用。

注意

注意:此组件仅应与普通和 Stencil JavaScript 项目一起使用。对于 Angular 项目,请使用 ion-router-outlet 和 Angular 路由器。

路由重定向具有两个可配置属性

  • from
  • to

它将 URL 从 "from" 重定向到另一个 URL "to"。当定义的 ion-route-redirect 规则匹配时,路由器将从 from 属性中指定的路径重定向到 to 属性中的路径。为了使重定向发生,from 路径需要与导航的 URL 完全匹配。

多个路由重定向

可以在 ion-router 中定义任意数量的重定向路由,但一次只能匹配一个。

路由重定向永远不会在自己的重定向之后调用另一个重定向,因为这会导致无限循环。

以下两个重定向

<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>

路由重定向作为守卫

重定向路由可以作为守卫,以防止用户根据给定条件(例如,用户是否已验证)导航到应用程序的某些区域。

可以动态添加和删除路由重定向,以重定向(或守卫)某些路由不被访问。在以下示例中,如果 isLoggedInfalse,则所有 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

描述重定向路由,将 URL 从 "from" 重定向到另一个 URL "to"。此属性是该 "from" URL。它需要与导航的 URL 完全匹配才能应用。

此值中指定的路径始终是绝对路径,即使未指定初始的 / 斜杠。
属性from
类型string
默认值undefined

to

描述重定向路由,将 URL 从 "from" 重定向到另一个 URL "to"。此属性是该 "to" URL。当定义的 ion-route-redirect 规则匹配时,路由器将重定向到此属性中指定的路径。

此属性的值始终是 ion-router 中定义的路由范围内的绝对路径,它不能与另一个路由器一起使用,也不能用于执行到不同域的重定向。

请注意,这是一个虚拟重定向,它不会导致真正的浏览器刷新,同样,它是在 ion-router 的上下文中进行的重定向。

当此属性未指定或其值为 undefined 时,即使 "from" 值匹配,整个重定向路由也是 noop。
属性to
类型null | string | undefined
默认值undefined

事件

名称描述冒泡
ionRouteRedirectChanged当此规则的任何值从 DOM 中添加/删除,或其任何公共属性发生更改时触发的内部事件。

ion-router 会捕获此事件,以更新其路由规则的内部注册表。
true

方法

此组件没有可用的公共方法。

CSS 阴影部分

此组件没有可用的 CSS 阴影部分。

CSS 自定义属性

此组件没有可用的 CSS 自定义属性。

插槽

此组件没有可用的插槽。