Skip to content

ルーティング(Router)

ルーティング API は、ミニプログラムのページ遷移スタックを管理します。ページパスはすべて app.jsonpages 配列の定義に基づきます。

オンラインで試す

navigateTonavigateBackredirectToreLaunch

ルーティング API のデモ

ボタンを押してルーティングを実行すると、コンソールに SDK のログが表示されます。

インポート

ts
import woo from 'mini-sdk'
// 或
import { router } from 'mini-sdk'

API 一覧

早見表

ページ下部の API 早見表 に、メソッドのシグネチャを素早く確認できます。

新しいページを開き、ナビゲーションスタックに積みます。

ts
woo.navigateTo(options: string | NavigateToOptions): Promise<void>

パラメータ:

フィールド必須説明
urlstringはいページパス。例:"/pages/detail/index"
paramsRecord<string, string | number>いいえURL クエリ。自動的に付与されます
onBack(data: unknown) => voidいいえ子ページから戻る際に受け取るコールバック

例:

ts
// 简写模式
await woo.navigateTo('/pages/detail/index')

// 携带参数
await woo.navigateTo({
  url: '/pages/detail/index',
  params: { id: 123, type: 'article' },
})
// 实际跳转:/pages/detail/index?id=123&type=article

// 接收子页面返回数据
await woo.navigateTo({
  url: '/pages/edit/index',
  onBack(data) {
    console.log('子页面返回数据:', data)
  },
})

onBack の仕組み

onBack は LIFO スタックで管理され、同じページへの navigateTo を複数回行っても互いに干渉しません。reLaunchnavigateToTab でルートスタックがリセットされると、保留中の onBack コールバックはすべて破棄されます。


一つ前、または指定段数戻ります。

ts
woo.navigateBack(options?: NavigateBackOptions): Promise<void>

パラメータ:

フィールド必須デフォルト説明
deltanumberいいえ1戻る段数
dataunknownいいえ前のページへ渡すデータ

例:

ts
// 返回上一页
await woo.navigateBack()

// 返回两级并携带数据
await woo.navigateBack({
  delta: 2,
  data: { result: 'success', value: 42 },
})

reLaunch

すべてのページを閉じ、指定ページを開きます(ナビゲーションスタックをリセット)。

ts
woo.reLaunch(options: string | ReLaunchOptions): Promise<void>

パラメータ:

フィールド必須説明
urlstringはい遷移先のページパス
paramsRecord<string, string | number>いいえURL クエリ
ts
await woo.reLaunch('/pages/index/index')

TabBar のページへ切り替えます。

ts
woo.navigateToTab(options: string | NavigateToTabOptions): Promise<void>

パラメータ:

フィールド必須説明
urlstringはいTabBar ページのパス
paramsRecord<string, string | number>いいえURL クエリ
groupIndexstringいいえタブグループのインデックス
ts
await woo.navigateToTab({
  url: '/pages/profile/index',
  groupIndex: '2',
})

reLaunchTab

すべてのページを閉じ、指定した TabBar ページに切り替えます。

ts
woo.reLaunchTab(options: string | ReLaunchTabOptions): Promise<void>

パラメータは navigateToTab と同じです。


getCurrentPages

現在のページスタック情報を取得します。

ts
woo.getCurrentPages(): Promise<PageInfo[]>

戻り値:

ts
interface PageInfo {
  route: string  // 页面路径
}
ts
const pages = await woo.getCurrentPages()
console.log('当前页面栈:', pages)
// [{ route: 'pages/index/index' }, { route: 'pages/detail/index' }]

getRoute

現在のページのパスとクエリを同期的に取得します。

ts
woo.getRoute(): RouteInfo

戻り値:

ts
interface RouteInfo {
  path: string                    // 页面路径(不含前导 /)
  query: Record<string, string>   // 查询参数
}
ts
const { path, query } = woo.getRoute()
console.log(path)   // "pages/detail/index"
console.log(query)  // { id: "123" }

ルーティングモード

  • シミュレータ:Hash ルーティング(http://localhost/#/pages/detail/index?id=1
  • ネイティブ:Pathname ルーティング(https://host/pages/detail/index?id=1

getRoute() は両方に対応します。

型定義

ts
interface NavigateToOptions {
  url: string
  params?: Record<string, string | number | undefined>
  onBack?: (data: unknown) => void
}

interface NavigateBackOptions {
  delta?: number
  data?: unknown
}

interface ReLaunchOptions {
  url: string
  params?: Record<string, string | number | undefined>
}

interface NavigateToTabOptions {
  url: string
  params?: Record<string, string | number | undefined>
  groupIndex?: string
}

interface ReLaunchTabOptions {
  url: string
  params?: Record<string, string | number | undefined>
  groupIndex?: string
}

interface PageInfo {
  route: string
}

interface RouteInfo {
  path: string
  query: Record<string, string>
}

type RouteParams = Record<string, string | number | undefined>

API 早見表

メソッド説明シグネチャ
navigateTo新しいページを開きスタックに積む(url | NavigateToOptions) → Promise<void>
redirectTo現在のページを閉じ、新しいページを開く(url | { url }) → Promise<void>
navigateBack一つ前のページに戻る({ delta?, data? }) → Promise<void>
reLaunch全ページを閉じ、指定ページを開く({ url }) → Promise<void>
switchTabtabBar ページに切り替える({ url }) → Promise<void>
getCurrentPages現在のページスタックを取得() → PageInfo[]
getRouteParams現在のページのルート引数を取得() → RouteParams

MiniDev Studio — ミニアプリ開発ツールキット