API 参考

createRouter

创建一个可以被小程序程序使用的路由实例。查看 RouterOptions 中的所有可以传递的属性列表。

函数签名:

export declare function createRouter(options: RouterOptions): Router

参数

参数类型描述
optionsRouterOptionsOptions 用来初始化 router

createWechatHistory

创建一个微信小程序路由

函数签名:

export declare function createWechatHistory(): RouterHistory

createAlipayHistory

创建一个支付宝小程序路由

函数签名:

export declare function createAlipayHistory(): RouterHistory

useRoute

获取当前路由地址

函数签名:

export declare function useRoute(): RouteLocationNormalized

useRouter

返回 router 实例。

函数签名:

export declare function useRouter(): Router

TypeScript

下面是 Microprogram Router 使用的一些接口和类型。文档引用它们是为了让你了解对象中现有的属性。

Router 属性

options

  • 类型RouterOptions

  • 详细内容

    创建 Router 时传递的原始配置对象。只读的。

Router 方法

afterEach

添加一个导航钩子,在每次导航后执行。返回一个删除注册钩子的函数。

函数签名:

afterEach(guard: NavigationHookAfter): () => void

参数

参数类型描述
guardNavigationHookAfter要添加的导航钩子

示例

router.afterEach((to, from) => {
  
})

back

如果可能的话,通过调用 history.back() 回溯历史。相当于 router.go(1)

函数签名:

back(): void

beforeEach

添加一个导航守卫,在任何导航前执行。返回一个删除已注册守卫的函数。

函数签名:

beforeEach(guard: NavigationGuard): () => void

参数

参数类型描述
guardNavigationGuard要添加的导航守卫

beforeResolve

添加一个导航守卫,在导航即将解析之前执行。在这个状态下,所有的组件都已经被获取,并且其他导航守卫也已经成功。返回一个删除已注册守卫的函数。

函数签名:

beforeResolve(guard: NavigationGuard): () => void

参数

参数类型描述
guardNavigationGuard要添加的导航守卫

示例

router.beforeEach(to => {
  if (to.meta.requiresAuth && !isAuthenticated) return false
})

getRoutes

获取所有 路由记录的完整列表。

函数签名:

getRoutes(): RouteRecord[]

go

允许你在历史中前进或后退。

函数签名:

go(delta: number): void

参数

参数类型描述
deltanumber相对于当前页面,你要移动到的历史位置

hasRoute

确认是否存在指定名称的路由。

函数签名:

hasRoute(name: string | symbol): boolean

参数

参数类型描述
namestring | symbol要确认的路由名称

push

通过在历史堆栈中推送一个 entry,以编程方式导航到一个新的 URL。

函数签名:

push(to: RouteLocation): Promise<NavigationFailure | void | undefined>

参数

参数类型描述
toRouteLocation要导航到的路由地址

replace

通过替换历史堆栈中的当前 entry,以编程方式导航到一个新的 URL。

函数签名:

replace(to: RouteLocation): Promise<NavigationFailure | void | undefined>

参数

参数类型描述
toRouteLocation要导航到的路由地址

RouterOptions

history

用于路由区分不同的小程序跳转方式。

函数签名:

history: RouterHistory

示例

createRouter({
  history: createWechatHistory(),
  // 其他配置...
})

routes

应该添加到路由的初始路由列表。

函数签名:

routes: RouteRecord[]

RouteRecord

当用户通过 routes option 来添加路由时,可以得到路由记录。 有三种不同的路由记录:

  • 单一视图记录:有一个 component 配置
  • 多视图记录 (命名视图) :有一个 components 配置

page

  • 类型string

  • 详细内容

    小程序实际页面地址。

path

  • 类型string

  • 详细内容

    记录的路径。应该以 / 开头,除非该记录是分包中的另一条记录的子记录。可以定义参数:/users/:id 匹配 /users/1 以及 /users/JserWang

  • 更多的内容请看动态路由匹配

root

  • 类型string

  • 详细内容

    作为分包的根路径。

  • 更多的内容请看分包配置

children

  • 类型RouteRecord 数组 (可选)

  • 详细内容

    用于配置当前记录的分包。

  • 更多的内容请看分包配置

name

  • 类型string | symbol (可选)

  • 详细内容

    路由记录独一无二的名称。

meta

  • 类型RouteMeta (可选)

  • 详细内容

    在记录上附加自定义数据。

  • 更多的内容请看Meta 字段

RouteLocation

用户级的路由地址,可以传递给 router.push()replace

原始位置可以是一个 字符串,比如 /users/JserWang,也可以是一个对象:

// 这三种形式是等价的
router.push('/users/JserWang')
router.push({ path: '/users/JserWang' })
router.push({ name: 'users', params: { username: 'JserWang' }})

原始路由地址还支持一个额外的配置 replace 来调用导航守卫中的 router.replace(),而不是 router.push()。请注意,即使在调用 router.push()时,它也会在内部调用 router.replace()

router.push({ path: '/user/JserWang', replace: true })
// 相当于
router.replace({ path: '/user/JserWang' })

RouteLocationNormalized

标准化的路由地址。在导航守卫中,tofrom 总是属于这种类型。

fullPath

  • 类型string

  • 详细内容

    RouteRecord 中的 path 与 stringifyQuery(params) 的拼接,与路由地址有关。

fullPagePath

  • 类型string

  • 详细内容

    RouteRecord 中的 page 与 stringifyQuery(params) 的拼接,与路由地址有关。

meta

  • 类型RouteMeta

  • 详细内容

    RouteRecord中配置的 meta,与路由地址有关。

  • 更多的内容请看Meta 字段

name

  • 类型string | symbol | undefined | null

  • 详细内容

    路由记录的名称。

page

  • 类型string

  • 详细内容

    RouteRecord 中 page,与路由地址有关。

params

  • 类型Record<string, string | string[]>

  • 详细内容

    path 中提取的已解码参数字典。

path

  • 类型string

  • 详细内容

    RouteRecord 中 path,与路由地址有关。

  • Arguments

  • 详细内容

    可以通过函数来控制路由导航。如果你返回一个值(或一个 Promise ),则可以省略 next 回调,并且我们鼓励这样做。可能的返回值 (和 next的参数) 有:

    • undefined | void | true: 验证导航
    • false: 取消导航
    • RouteLocation: 重定向到一个不同的位置
  • 更多的内容请看导航守卫