Skip to content

Latest commit

 

History

History
114 lines (78 loc) · 3.62 KB

router.md

File metadata and controls

114 lines (78 loc) · 3.62 KB
title
ion-router

import Props from '@ionic-internal/component-api/v8/router/props.md'; import Events from '@ionic-internal/component-api/v8/router/events.md'; import Methods from '@ionic-internal/component-api/v8/router/methods.md'; import Parts from '@ionic-internal/component-api/v8/router/parts.md'; import CustomProps from '@ionic-internal/component-api/v8/router/custom-props.mdx'; import Slots from '@ionic-internal/component-api/v8/router/slots.md';

<title>ion-router: Router Component to Coordinate URL Navigation</title>

import EncapsulationPill from '@components/page/api/EncapsulationPill';

The router is a component for handling routing inside vanilla and Stencil JavaScript projects.

:::note Note: This component should only be used with vanilla and Stencil JavaScript projects. See the routing guides for Angular, React, and Vue for framework-specific routing solutions. :::

Apps should have a single ion-router component in the codebase. This component controls all interactions with the browser history and it aggregates updates through an event system.

ion-router is just a URL coordinator for the navigation outlets of ionic: ion-nav, ion-tabs, and ion-router-outlet.

That means the ion-router never touches the DOM, it does NOT show the components or emit any kind of lifecycle events, it just tells ion-nav, ion-tabs, and ion-router-outlet what and when to "show" based on the browser's URL.

In order to configure this relationship between components (to load/select) and URLs, ion-router uses a declarative syntax using JSX/HTML to define a tree of routes.

Basic Usage

import BasicExample from '@site/static/usage/v8/router/basic/index.md';

Interfaces

RouterEventDetail

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

RouterCustomEvent

While not required, this interface can be used in place of the CustomEvent interface for stronger typing with Ionic events emitted from this component.

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

Usage

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

Properties

Events

Methods

CSS Shadow Parts

CSS Custom Properties

Slots