Vue 嵌套路由怎么处理未匹配子路由时的 404 兜底

轻敏酱_3246

轻敏酱_3246

2026-10-24

901人浏览

原创

嵌套路由中子路由未匹配时不会触发顶层通配符,需在父路由children中配置空路径默认路由和:pathmatch(.)子级通配路由,并确保其命名唯一;或通过meta标记+全局守卫统一拦截跳转。

vue 嵌套路由怎么处理未匹配子路由时的 404 兜底

Vue 嵌套路由中,子路由未匹配时不会自动触发顶层的 /:pathMatch(.*)* 通配符路由——因为父路由已成功匹配,子路径为空或非法,但整体 URL 仍落在父路由范围内。此时需在父组件内部显式处理“子路由未命中”的情况。

在父组件的 <router-view></router-view> 外层加兜底逻辑

父组件(如 User.vue)应判断当前子路由是否有效,若 $route.matched 中无活跃子路由(即只匹配到父级自身),就主动渲染 404 内容或重定向:

  • 用 v-if 控制:当 $route.matched.length === 1(仅父路由匹配)且当前路径不是父路由默认子路径(如 /user/123)时,显示 Not Found 提示
  • 更推荐方式:在父组件 setup 中监听 $route 变化,发现子路由未命中时调用 router.push({ name: 'user-not-found', params: { id: $route.params.id } }),跳转到一个专用于嵌套场景的 404 子路由

为嵌套路由配置专用的空路径 + 通配子路由

在父路由的 children 数组里,明确声明两个关键子路由:

vue-composition-api-best-practices
vue-composition-api-best-practices

Vue 3 组合式 API 与

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Vue 教程
Vue 教程

共42课时 | 17.2万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.4万人学习

Vue.js 微实战--十天技能课堂
Vue.js 微实战--十天技能课堂

共18课时 | 1.7万人学习