Vue.jsのコンポーネントを使ってみる

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オプション内にコンポーネントを定義しています。
これでこのインスタンス内のみでコンポーネントが使用できるようになりました。
ローカルコンポーネントのデモページ

参考サイト

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年11月
 12
3456789
10111213141516
17181920212223
24252627282930