Nuxt.jsで複数のlayoutsファイルを作成して適用する方法
Nuxt.jsで複数のlayoutsファイルを作成して適用する方法を紹介します。
Nuxt.jsで複数のlayoutsファイルを作成して適用する方法
ディレクトリ構造は上のようになっているとします。
手順は次の通りです。
- layoutsフォルダの中に、あらたらしいVueファイルを作成します。
- そして、それをpagesのファイルでNuxt.jsの特別なプロパティであるlayoutプロパティを使って指定します。
具体例をみてみましょう。
まずデフォルトで設定されているlayoutsのdefault.vueは次のような内容になっています。
<template>
<div>
<Nuxt />
</div>
</template>
ここに、styleタグでスタイルを設定しています。
Nuxtの部分に内容が出力されていることがわかります。
何も指定しない限り、ここで指定されているレイアウトが適用されます。
複数レイアウトを作成して、個別のケースでレイアウトを使い分けたい場合は、layoutsフォルダの中に、Vueファイルを作成します。
今回の場合、products.vueファイルを作成しています。
新しいレイアウトを作成する
layouts/products.vue
<template>
<div>
<header>商品ページ</header>
<Nuxt />
</div>
</template>
ここにsytleを指定することでレイアウトを整えることができます。
そして、このレイアウトを適用させるためには、layoutプロパティを使います。
作成したレイアウトを適用する
pages/products.vueに適用したいとします。
その場合、次のようにscriptタグの中で、layoutプロパティを使います。
<script>
export default {
data() {
return {
productId: ''
}
},
methods: {
onLoadProduct() {
this.$router.push(`/products/${this.productId}`)
}
},
layout: 'products'
}</script>
また、ネスト化している場合、このレイアウトを適用したいすべてのVueファイルに同様にlayoutプロパティを使ってレイアウトを指定すればOKです。