Skip to content

路由系统

项目使用 @uni-helper/vite-plugin-uni-pages 实现基于文件系统的路由,配合 uni-mini-router 进行编程式导航。

页面跳转

typescript
// 保留当前页
uni.navigateTo({ url: '/pages/detail/index?id=123' })

// 不保留当前页
uni.redirectTo({ url: '/pages/login/index' })

// 关闭所有页面
uni.reLaunch({ url: '/pages/index/index' })

// 编程式导航(uni-mini-router)
router.push({ path: '/pages/mine/profile/index' })

参数传递

typescript
// 发送
uni.navigateTo({ url: `/pages/detail/index?id=${id}&type=${type}` })

// 接收
onLoad((options) => {
  const { id, type } = options
})

复杂对象使用事件总线:

typescript
// 发送
uni.navigateTo({ url: '/pages/detail/index', success: () => uni.$emit('passData', data) })

// 接收
onMounted(() => uni.$on('passData', (data) => { /* ... */ }))
onUnmounted(() => uni.$off('passData'))

页面配置

在每个 .vue 文件中通过 <route> 块定义页面配置:

vue
<!-- TabBar 页面 -->
<route lang="json">
{
  "name": "home",
  "style": { "navigationStyle": "custom" },
  "layout": "tabbar"
}
</route>

<!-- 普通页面 -->
<route lang="json">
{
  "name": "profile",
  "style": { "navigationBarTitleText": "个人资料" }
}
</route>

<!-- 自定义导航栏页面 -->
<route lang="json">
{
  "name": "account",
  "style": { "navigationStyle": "custom" }
}
</route>

配置项

属性类型说明
namestring路由名称
styleobject页面样式配置,同 pages.json
layoutstring | false布局组件,false 不使用布局
metaobject自定义元数据

布局配置

<route> 块中通过 layout 字段指定页面布局:

vue
<route lang="json">
{
  "name": "home",
  "style": { "navigationStyle": "custom" },
  "layout": "tabbar"
}
</route>

详见 布局系统 文档。

基于 MIT 许可发布 · 由 ❤️ 和 ☕ 驱动 · 支持作者