emahiro/b.log

Drastically Repeat Yourself !!!!

Nuxt3 で Custom Navigation を実装する

Overview

Nuxt3 を使って Custom Navigation を実装します。

大まか内容は公式の Pages の https://nuxt.com/docs/guide/directory-structure/pages/#navigation の部分に記載されてる内容です。

Usecase

以下のような Tab の UI を Nuxt3 を実現する際にこの Custom Navigation を使います。

tailwindui.com

例えばユーザーの詳細ページでいくつか情報のセクションを分けてタブで画面の遷移なく情報の表示を変えたいケースなどを考えます。

Samples

ディレクトリの構成のサンプルは以下です。

pages
   users
       [id]
          [tabName].vue

このときに $tabName で指定した tab にするときに navigateTo() を使ったメソッドを用意することで画面ロードが走らない画面遷移を実現することができます。

const selectTab = (tabName: string) => {
  navigateTo(`/users/${route.params.id}/${tabName}`)
}

上記のサンプルでは例えばユーザーのフォロー一覧を見る場合に /users/1/follows というような URL に遷移するように実装し、follows tab のページを [tabName].vue に実装します。

これでリロード無しで Nuxt3 上でタブ遷移やページ遷移を実装することができます。案外簡単だなと思ったのとこういうユースケースはちゃんとドキュメントで網羅されてるので目を通しておかないといかんなと思いました。