はじめに
Vue.jsを最近勉強し始めたので学んだ文法などを備忘録としてメモしていこうと思います。
今回はVue Routerにて、children
オプションを用いてネストしたルートが正しく認識されるように設定していこうと思います。
ネストしたルート
前々回の記事にて、ルートファイルの設定を行いました。
しかしながら、上記の設定のみでは対象のpath
以降、例えば/test
ルートをセットしていた場合は/test/1
や/test/details
などのそれに続くpathに対応ができません。
その対応を行うのが今回の記事で記載するchildren
オプションです。
childrenオプション
childrenオプションの使い方は以下のように対象の親pathのオブジェクト内にchildren
オプションを追加して親path同様に再度path
, component
を追加していきます。
const router = createRouter({
history: createWebHistory(),
routes: [
{
path: '/test',
component: Test,
children: [
{
path: 'details',
component: TestDetails
}
]
},
]
});
export default router;
Testファイルは以下のようにさらにrouter-view
タグをセットします。
/test/details
へアクセスされた際に以下へ記載した<router-view></router-view>
がTestDetails
の内容へ変換されます。
<template>
<div>Test</div>
<router-view></router-view>
</template>
以上を用いてサンプルを作ってみる
それではVue Routerとchildrenオプションを用いて簡単なサンプルを作ってみます。
内容としては、/Morning
ルートの先へbreakfast
, details
ルートを設定し、それぞれの出力内容が正常に行えることを確認していきます。
<template>
<div>おはよう</div>
<router-view></router-view>
</template>
<template>
<div>朝ごはんはパンです。</div>
</template>
<template>
<div>だんだん冷えてきたので体調には気を付けていきましょう。</div>
</template>
import Morning from './views/Morning.vue';
import MorningDetails from './views/MorningDetails.vue';
import MorningBreakfast from './views/MorningBreakfast.vue';
import { createRouter, createWebHistory } from 'vue-router';
const router = createRouter({
history: createWebHistory(),
routes: [
{
path: '/Morning',
component: Morning,
children: [
{
path: 'details',
component: MorningDetails
},
{
path: 'breakfast',
component: MorningBreakfast
}
]
},
]
});
export default router;
<template>
<router-link to="/Morning">朝の挨拶</router-link>
<router-view></router-view>
</template>
結果
以下のようにそれぞれのURLで正常に文字が表示されていることが分かります。
おわりに
今回はchildren
オプションを用いてネストしたルートの設定を行いました。
こちらも実際のアプリ開発で利用する場面は多いと思うのでしっかり理解していきたいと思います。