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 到同一页面而互不干扰。当 reLaunch / navigateToTab 重置路由栈时,所有挂起的 onBack 回调自动清除。


返回上一页或多级页面。

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

参数:

字段类型必填默认值说明
deltanumber1返回层级数
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>

参数:

字段类型必填说明
urlstringTabBar 页面路径
paramsRecord<string, string | number>URL 查询参数
groupIndexstringTab 分组索引
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
  • Native: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

MiniDev Studio — 小程序开发利器