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

Vue3项目中嵌套<router-view />无法渲染子路由视图的问题求助

问题分析与解决:Vue3子路由无法渲染的问题

你遇到的问题核心在于子路由的path配置错误,导致Home.vue无法被正确渲染到父组件的<router-view>中。

错误原因

在Vue Router的规则里,子路由的path如果以/开头,会被解析为绝对路径,而不是相对于父路由的路径。你原来的子路由配置:

children: [
  { path: "/", component: Home },
],

这里的path: "/"对应的是根路径/,但你的主路由已经把/重定向到/foo了。当访问/foo时,父路由/foo匹配成功,但找不到对应的子路由(因为子路由的路径是/,不是/foo的子路径),所以<router-view>就没有内容渲染。

修正方案

把子路由的path改成空字符串(表示匹配父路由的默认子路径),修改foo/router.js中的children配置:

const featureRoute = {
  path: "/foo",
  component: Index,
  children: [
    { path: "", component: Home }, // 将"/"改为空字符串
  ],
};

为什么这样改?

当子路由的path为空字符串时,它会匹配父路由的路径/foo,此时父组件Index.vue中的<router-view>就会渲染Home.vue的内容,正好符合你预期的“Foo”下方显示“Bar”的效果。

额外验证点

确认你的其他配置没有问题:

  • 主路由的重定向{ path: "/", redirect: "/foo" }正常工作
  • registerFooRouter(router)正确注册了子路由模块
  • App.vue和Index.vue中的<router-view>都正确放置

修改后重新运行项目,就能看到预期的两个div内容了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 20:57:35