ルーティング(Router)
ルーティング API は、ミニプログラムのページ遷移スタックを管理します。ページパスはすべて app.json の pages 配列の定義に基づきます。
オンラインで試す
インポート
ts
import woo from 'mini-sdk'
// 或
import { router } from 'mini-sdk'API 一覧
早見表
ページ下部の API 早見表 に、メソッドのシグネチャを素早く確認できます。
navigateTo
新しいページを開き、ナビゲーションスタックに積みます。
ts
woo.navigateTo(options: string | NavigateToOptions): Promise<void>パラメータ:
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
url | string | はい | ページパス。例:"/pages/detail/index" |
params | Record<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 を複数回行っても互いに干渉しません。reLaunch や navigateToTab でルートスタックがリセットされると、保留中の onBack コールバックはすべて破棄されます。
navigateBack
一つ前、または指定段数戻ります。
ts
woo.navigateBack(options?: NavigateBackOptions): Promise<void>パラメータ:
| フィールド | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
delta | number | いいえ | 1 | 戻る段数 |
data | unknown | いいえ | — | 前のページへ渡すデータ |
例:
ts
// 返回上一页
await woo.navigateBack()
// 返回两级并携带数据
await woo.navigateBack({
delta: 2,
data: { result: 'success', value: 42 },
})reLaunch
すべてのページを閉じ、指定ページを開きます(ナビゲーションスタックをリセット)。
ts
woo.reLaunch(options: string | ReLaunchOptions): Promise<void>パラメータ:
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
url | string | はい | 遷移先のページパス |
params | Record<string, string | number> | いいえ | URL クエリ |
ts
await woo.reLaunch('/pages/index/index')navigateToTab
TabBar のページへ切り替えます。
ts
woo.navigateToTab(options: string | NavigateToTabOptions): Promise<void>パラメータ:
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
url | string | はい | TabBar ページのパス |
params | Record<string, string | number> | いいえ | URL クエリ |
groupIndex | string | いいえ | タブグループのインデックス |
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> |
switchTab | tabBar ページに切り替える | ({ url }) → Promise<void> |
getCurrentPages | 現在のページスタックを取得 | () → PageInfo[] |
getRouteParams | 現在のページのルート引数を取得 | () → RouteParams |