Skip to content

路由管理(useRoute)

跨平台路由统一封装,统一参数格式,自动编码 params。

基础用法

typescript
import { useRoute } from '@/uni_modules/see-u-ui/utils/hooks/useRoute'

const {
  navigateTo,
  redirectTo,
  switchTab,
  reLaunch,
  navigateBack,
  currentRoute,
  getQuery
} = useRoute()

API

返回值

属性/方法类型说明
navigateTo(options: RouteOptions) => Promise<void>跳转到新页面(压栈)
redirectTo(options: RouteOptions) => Promise<void>重定向到新页面(替换当前页)
switchTab(options: RouteOptions) => Promise<void>切换 Tab 页
reLaunch(options: RouteOptions) => Promise<void>关闭所有页面并打开新页面
navigateBack(delta?: number) => Promise<void>返回上一页,默认 delta=1
currentRouteRef<{ path: string; params: Record<string, any> }>当前路由信息
getQuery<T = Record<string, string>>() => T获取当前页面参数

RouteOptions

属性类型必填说明
urlstring目标页面路径
paramsRecord<string, any>路由参数,自动序列化编码
eventsRecord<string, Function>页面间通信事件
animationTypestring页面动画类型(仅 APP)

animationType 可选值

说明
auto自动选择动画
none无动画
slide-in-right从右侧滑入
slide-in-left从左侧滑入
slide-out-right向右侧滑出
slide-out-left向左侧滑出
fade-in淡入
zoom-out缩放
zoom-fade-out缩放淡出
pop-out弹出

示例

基础跳转

typescript
const { navigateTo } = useRoute()

// 跳转到新页面
await navigateTo({ url: '/pages/detail/index' })

带参数跳转

typescript
const { navigateTo } = useRoute()

// 参数会自动 encodeURIComponent(JSON.stringify(params))
await navigateTo({
  url: '/pages/detail/index',
  params: { id: '123', name: 'test' }
})

// 目标页面获取参数
const { getQuery } = useRoute()
const params = getQuery<{ id: string; name: string }>()
console.log(params.id) // '123'

返回上一页

typescript
const { navigateBack } = useRoute()

// 返回上一页
await navigateBack()

// 返回上两页
await navigateBack(2)

监听当前路由

typescript
const { currentRoute } = useRoute()

console.log(currentRoute.value.path)
console.log(currentRoute.value.params)

平台差异

平台实现方式
H5vue-router(条件编译)
小程序uni.navigateTo / uni.redirectTo 等
APPuni.navigateTo / uni.redirectTo 等

辽 ICP 备 2025070134 号