Skip to content

Router 路由 ​

介绍 ​

面向 uni-app 的路由用法示例:跳转、读取路由信息、异步导航守卫等。

安装与接入、类型提示、包名配置等完整说明见 Router 路由。

基础用法 ​

页面内获取路由实例与路由信息:

ts
const router = useRouter();
const route = useRoute();         // 全局当前路由(跟踪最新活跃页)
const pageRoute = usePageRoute(); // 本页路由快照(跳转后不变)

TIP

useRoute / usePageRoute 返回响应式对象;经 router.push 等进入的非首屏页,在 setup 内即可读到完整 query 与 pages.json 配置(meta / style / config),无需等待 onLoad。

跳转 ​

ts
// ① pack + path(推荐)
router.push({ pack: 'case', path: '/router/detail', query: { id: '1' } });

// ② pack + name
router.push({ pack: 'case', name: 'router-detail', query: { id: '1' } });

// ③ 完整路径
router.push('/pagesCase/router/detail?id=1');

// 其他方法
router.replace({ pack: 'case', path: '/router' });
router.back();

跳转均为 Promise,失败时可捕获:

ts
try {
  await router.push({ pack: 'case', path: '/not-exists' });
} catch (err) {
  console.warn('跳转失败', err);
}
方法说明
router.push保留当前页跳转
router.pushTab跳转 tabBar 页
router.replace关闭当前页跳转
router.replaceAll关闭所有页打开目标页
router.back返回上 N 级,默认 1

获取路由信息 ​

ts
const route = useRoute();
const pageRoute = usePageRoute();

// 常用字段
pageRoute.name;
pageRoute.path;
pageRoute.pack;
pageRoute.fullPath;
pageRoute.query;
pageRoute.meta;
pageRoute.style;
pageRoute.config;
API说明
useRoute()全局当前路由,始终跟踪最新活跃页
usePageRoute()本页快照,进入时写入,跳转后不被新页覆盖

导航守卫 ​

常用于登录拦截等场景,按需使用

ts
router.beforeEach(async (to, from) => {
  if (to.path === '/router/guard') {
    try {
      await showDialog({
        title: '提示',
        message: '确认进入吗?',
        showCancelButton: true,
      });

      // 确认
    } catch {
      return false; // 取消
    }
  }
});

router.afterEach((to, from) => {
  // 导航完成后上报、埋点等
});
返回值行为
undefined / true / 无返回放行
false取消本次跳转
字符串或位置对象重定向到该位置

更多 ​

接入插件、类型互绑、包名派生、边界说明等详见 Router 路由。

赣ICP备2025061025号-1