EeBlog(テクニカルブログ)

新人プログラマーのアプリ開発 第5回 Vueのプロパティ

今回は Vue のプロパティを使ってメモの入力&閲覧ページを作っていきます。

この記事で分かること
・Vue のプロパティ

Vue のプロパティ

Vue.js には、ページやコンポーネントで扱う値や処理ロジックを記述するための便利なプロパティが予め用意されています。

data – データを定義する
computed – 算出プロパティ。基本的にはdataプロパティのゲッターとして使うが、セッターも定義できる
methods – メソッドを定義する
watch – ウォッチャ。dataプロパティの変更を監視する

computed は基本的にゲッターとして使いますが、セッターとして定義することもできます。このほかにも、Vue インスタンスの生成時にのみ呼ばれる created など、ライフサイクルフックに関するプロパティなどが用意されています。

……前置きが長くなりましたが、今回はとりあえず、data と methods を使ってみます。

memo.vue に入力フォームとボタン、閲覧部分を作成します。

// memo.vue
<template>
  <div>
    <section>
      <div id="input-wrapper">
        <textarea
          cols="40" rows="5"
          placeholder="メモをとる"
          v-model="input"
        ></textarea>
      </div>
      <button type="button" v-on:click="add">記録する</button>
    </section>
    <section>
      <h5 id="list-title">メモ一覧</h5>
      <p class="item-wrapper">
        {{ items }}
      </p>
    </section>
  </div>
</template>

<script>
export default {
  data() {
    return {
      input: '',
      items: ''
    }
  },
  methods: {
    add() {
      if (!this.input) return
      this.items = this.input
      this.input = ''  // 入力フォームの値をクリア
    }
  }
}
</script>

<style scoped>
/* 省略 */
</style>


html タグに、いくつか新しいプロパティや構文を記述しています。

・v-model – data と html の双方向のデータバインド。互いの変更を反映する
・v-on – イベントハンドラ
・{{ }} – マスタッシュ構文。各プロパティや式を書くことができる

処理の流れは次のとおりです。

textarea に入力があると、値が input に代入される

button がクリックされると、add() メソッドが呼ばれ、処理を実行する

item-wrapper の p タグに入力内容が表示される


データの変更が即座に反映されています!(つづく)