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

Nuxt嵌套页面跳转丢失父组件布局问题求助

问题描述

现有目录结构如下:

|-- pages
      |--page1
      |     |--index.vue
      |     |--child1.vue
      |     |--child2.vue
      |
      |--page2

访问 localhost:3000/page1 时,pages/page1/index.vue 会被加载。我希望在 index.vue 中添加两个链接,使子组件能在父组件 index.vue 内部渲染,编写的代码如下:

index.vue

<template>
    <v-container>
        <h1>I am the parent view</h1>
    <nav>
      <ul>
        <li>
          <NuxtLink to="page1/child1">Child</NuxtLink>
        </li>
        <li>
          <NuxtLink to="page1/child2">Child 2</NuxtLink>
        </li>
      </ul>
    </nav>
    <NuxtChild  />
    </v-container>
</template>
<script>
export default {
    
}
</script>

child1.vue

<template>
    <v-container>
      <h5>child1</h5>
    </v-container>
  </template>

child2.vue

<template>
    <v-container>
      <h5>child2</h5>
    </v-container>
  </template>

但点击链接后,页面会跳转到 localhost:3000/page1/child1,同时丢失父组件的布局。请问我哪里操作有误?


解决方案

问题出在目录结构不符合Nuxt嵌套路由的规则,按以下两步修改即可解决:

  1. 调整目录结构
    Nuxt的嵌套路由要求子组件必须放在与父路由同名的子目录下,调整后的结构如下:

    |-- pages
          |--page1
          |     |--index.vue
          |     |--page1          <!-- 新增与父路由同名的子目录 -->
          |           |--child1.vue
          |           |--child2.vue
          |
          |--page2
    
  2. 修正NuxtLink的路径
    把链接路径改成相对路径或者正确的嵌套路由绝对路径:

    <!-- 相对路径写法 -->
    <NuxtLink to="./child1">Child</NuxtLink>
    <NuxtLink to="./child2">Child 2</NuxtLink>
    
    <!-- 绝对路径写法 -->
    <NuxtLink to="/page1/child1">Child</NuxtLink>
    <NuxtLink to="/page1/child2">Child 2</NuxtLink>
    

修改完成后,点击链接时子组件就会渲染在父组件的<NuxtChild />位置,父组件的布局也会保留。

内容的提问来源于stack exchange,提问作者E. Williams

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 12:35:30