@ruik0321

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

【Nuxt3】ネストルーティングがうまくできない

Nuxt3のネストルーティングがうまくできない

https://gihyo.jp/book/2023/978-4-297-13685-7
上記のNuxt 3 フロントエンド開発の教科書を読みながらNuxtを勉強しています
内容が2023年と古く、公式サイトやAiを駆使して書き換えつつ進めています

NuxtpageがあるページでNuxtLinkでNuxtPage部分をネストルーティングしたいのですがページ遷移してしまいます
本とはツリー構造や命名をすこし変えています

#pj>pages>member>index.vue

<script setup lang="ts">
import { useMemberStore } from '~/stores/member'
const { memberList } = useMemberStore()
</script>

<template>
  <h1>会員管理</h1>
  <nav id="breadcrumbs">
    <ul>
      <li>TOP</li>
      <li>会員リスト</li>
    </ul>
  </nav>
  <section>
    <h2>会員リスト</h2>

    <p>
      <NuxtLink :to="{ name: 'member-memberlist-memberadd' }">新規会員登録はこちらから</NuxtLink>
    </p>

    <section>
      <ul>
        <li v-for="([id, member]) in memberList.entries()" :key="id">
          <NuxtLink :to="`/member/memberlist/${id}`">
            IDが{{ id }}の{{ member.name }}さん
          </NuxtLink>
        </li>
      </ul>
    </section>

    <NuxtPage />
  </section>
</template>

ツリー構造

pages
├── member
│   ├── memberlist
│   │   ├── [id].vue
│   │   ├── index.vue
│   │   └── memberadd.vue
│   └── index.vue
└── index.vue

自分で試したこと

#ファイルの名前の変更
[id].vueを[id]/index.vueに変更

#パスの変更
<NuxtLink :to="{ name: 'member-memberlist-memberadd' }">新規会員登録はこちらから</NuxtLink>
ではなく
<NuxtLink :to="{ name: 'member-memberadd' }">新規会員登録はこちらから</NuxtLink>

上記以外にもディレクトリ構造修正しましたがずっとページ遷移のままです

初歩的な質問で申し訳ございませんが
ご回答いただける方がいましたらどうぞよろしくお願いいたします。

0 likes

1Answer

一覧を表示したまま、「新規会員登録はこちらから」
をクリックしたら、会員一覧の下に
pages/member/memberlist/memberadd.vue の
中身を表示→登録ボタン?のクリックで
「新規会員登録はこちらから」に戻す、や、
一覧を表示したまま、詳細画面に遷移用のリンクを
クリックしたら、会員一覧の下に詳細を表示する、
をしたいのなら、
member下に memberlist.vueを作成、ここに
と会員一覧とNuxtPage タグを書く、
pages/member/memberlist/index.vueには
「新規会員登録はこちらから」リンクを
書くようにすれば、@ruik0321 が希望する結果
になるはずです。

会員一覧と会員登録を一画面で表示したいだけなら、
pages/member/memberlist/memberadd.vue
の中身を切り出すか移動して、ルート下の
componentsフォルダ下にコンポーネント(.vue)
として作成、
pages/memberlist/index.vue に
作成したコンポーネントを埋め込む
形にすれば、@ruik0321 が希望する結果
になるはずです。

どんな回答が求められているのか、把握
しやすい質問を書くことをおすすめ
します。

「画面遷移のままです」では、現在、どんな動作で
どんな動作を実現したいのか、わかりません。

現在、どんな動作で、どんな動作を実現したいのか、
詳しく書くことをおすすめします。

「画面遷移のままです」では、NuxtLink(の機能)
を理解していないの、となってしまいます。

コードを含め、何回か読まないと、どんな回答が
求められているのか、わかりませんでした。

何回か読んで、質問者の意図を推し量らないと
回答できない質問はどうかと思います。

0Like

Your answer might help someone💌