Vue.jsのコンポーネントの使い方について簡単に試してみます。
サンプルコード
まずはグローバルにコンポーネントを定義してみます。
Vue.component()の第一引数にコンポーネント名、第二引数にオプションを設定します。
Vue.component('button-sample', {
template: '<button>button</button>'
})
var app = new Vue({
el: '#app',
});
オプション内のtemplateの値がコンポーネントの要素になります。
この場合button-sampleという名前のコンポーネントを作成しました。
このコンポーネントを以下のように使用できます。
<div id="app"> <button-sample></button-sample> </div>
これでボタンのコンポーネントを追加できました。
コンポーネント使用のデモページ
第二引数のオプションにdataなどを設定することもできます。
Vue.component('button-counter', {
data: function () {
return {
count: 0
}
},
template: '<button v-on:click="count++">count {{ count }}</button>'
})
var app = new Vue({
el: '#app',
});
コンポーネント名をbutton-counterに変更して、dataで設定したcountをボタンクリックで変更するようにしました。
注意点として、コンポーネント内のdataを関数にしています。
このコンポーネントを以下のように使用できます。
<div id="app"> <button-counter></button-counter> </div>
これでカウントアップするボタンのコンポーネントを追加できました。
コンポーネント使用のデモページ2
コンポーネントは再利用可能なので、複数設置もできます。
<div id="app"> <button-counter></button-counter> <button-counter></button-counter> <button-counter></button-counter> </div>
コンポーネント毎に新しいインスタンスが作成されるため、ボタン毎にカウント数が保持されます。
コンポーネント複数設置のデモページ
ここまでで試したVue.component()はグローバルにコンポーネントを定義する方法ですが、これとは別にローカルにコンポーネントを定義することもできます。
前述のコンポーネントをローカルで定義してみます。
var app = new Vue({
el: '#app',
components: {
'button-counter': {
data: function () {
return {
count: 0
}
},
template: '<button v-on:click="count++">count {{ count }}</button>'
},
}
});
componentsオプション内にコンポーネントを定義しています。
これでこのインスタンス内のみでコンポーネントが使用できるようになりました。
ローカルコンポーネントのデモページ
コメントが承認されるまで時間がかかります。