Vue.jsで作成したサイトで個別のページタイトルを設定する
案件詳細ページなど、ページ毎に個別のタイトルが必要なページで使用。
titleやmetaといった情報を設定(書き換える)ことが出来る
1、vue-headを追加
◯yarnでのインストール
yarn add vue-head
◯npmでのインストール
npm install vue-head –save
2、main.jsへの記述追加
// Vue.head import VueHead from 'vue-head'; Vue.use(VueHead);
3、出力するコンポーネントでheadを設定
<script>
export default {
head: {
title() {
return {
inner: 'ページタイトル',
separator: '|',
complement: 'サイト名/ページの概要など'
}
}
},
};
</script>
上記は、固定の値を入力する場合である。
titleに変数を使いたい場合には、function関数を使用した上で、別の場所で変数を設定する処理が必要になる。
例)タイトルタグを変数で指定する場合
<script>
export default {
head: {
title: function () {
return {
inner: this.pageTitle,
separator: '|',
complement: 'サイト名/ページの概要など'
}
}
},
data() {
return {
pageTitle: ''
};
},
created() {
this.getTitle(); //コンテンツ情報の取得などなんらかの処理
},
methods: {
this.getTitle() {
~略~
this.pageTitle = this.item.title;
this.$emit('updateHead'); // 入力した内容をヘッダーに反映
}
}
};
</script>
ポイントはthis.$emit(‘updateHead’);でヘッダーの内容を更新する必要があることです。
これを知らなかったため、ヘッダーに変数の内容を反映させられずに悩みました。
参考サイト
- 親バカエンジニアのナレッジ帳
- vue.jsでheadの要素を設定する時はvue-headが便利!
- https://ti-tomo-knowledge.hatenablog.com/entry/2018/06/21/104519
- Qiita
- 【Vue.js】Vue CLIで作成したページのtitleとdescriptionを変更する方法
- https://qiita.com/yuta-38/items/1fc2d1f5b4add2c0ed2c
- Qiita
- 【Vue.js】vue-headの導入について
- https://qiita.com/shin_moto/items/0755d1fa70c0431623e5
-
前の記事
vue.jsで取得したhtmlタグを表示 2020.10.14
-
次の記事
Vue.jsで複数のclassを条件に合わせてつける 2021.01.14