You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue Router:如何使用push跳转至两级上级路径?

Vue Router 实现向上两级路径跳转的正确方式

你可以通过以下几种可靠方法实现需求:

1. 优先使用命名路由(推荐)

给目标路由配置唯一名称,直接通过名称跳转,完全避免路径硬编码问题:

// 路由配置示例
const routes = [
  {
    path: '/app/hello',
    name: 'AppHello', // 给目标路由设置名称
    component: HelloComponent
  },
  // 其他路由配置...
]

// 按钮点击时执行跳转
router.push({ name: 'AppHello' })

这种方式不受当前路径变化影响,维护性最强。

2. 手动构造绝对路径

拆分当前路径,截取掉最后两段后拼接目标路径:

// 获取当前路径并拆分成段,过滤空字符串
const pathParts = router.currentRoute.path.split('/').filter(part => part)
// 保留前n-2段,再拼接目标路径
const targetPath = `/${pathParts.slice(0, -2).join('/')}/hello`
router.push(targetPath)

比如当前路径是/app/users/id,拆分后得到['app', 'users', 'id'],截取前1段(slice(0,-2)得到['app']),最终拼接成/app/hello。

3. 利用路由匹配记录(matched数组)

通过currentRoute.matched获取当前匹配的路由层级,直接基于上级路由路径拼接:

// 假设/app是当前路由匹配的第一级(根据你的路由嵌套结构调整索引)
const parentRoute = router.currentRoute.matched[0]
router.push(`${parentRoute.path}/hello`)

如果你的路由嵌套结构是/app -> /app/users -> /app/users/id,matched[0]就是/app对应的路由记录,拼接后就是/app/hello。

为什么你的尝试无效?

  • router.push('../../hello'):Vue Router的相对路径是基于当前路由配置的path而非URL路径。如果当前路由是/app/users/:id(嵌套在/app/users下),相对路径会被解析为相对于/app/users/:id,导致跳转错误。
  • router.push('/hello'):这是根路径绝对跳转,会直接跳转到/hello而非/app/hello,不符合需求。

内容的提问来源于stack exchange,提问作者rsram312

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 11:23:35