Vueの構文についてコードベースで簡単にまとめます。
今回は以下の三つです。
ちなみに前回はこちら
- eventハンドリング
- class & styleバインディング
- computedプロパティー
eventハンドリング
<div class="cart">Cart({{ cart }})</div>
...
<button class="button">Add to Cart</button>
data() {
return {
cart: 0,
...
}
}
button
をクリックした際にcart
の値を増やしたい場合、以下のように書くことができます。
インラインで書く(処理がシンプルな場合)
<button class="button" v-on:click="cart += 1">Add to Cart</button>
処理がシンプルな場合この様にインラインで書くことができますが、より複雑な場合は以下の様にmethods
を使います。
メソッドを使って書く(基本的にこちらを使うことが多いです)
<button class="button" v-on:click="addToCart">Add to Cart</button>
button
をクリックすると、addToCart
メソッドが呼ばれます。
const app = Vue.createApp({
data() {
return {
cart: 0,
...
}
},
methods: {
addToCart() {
this.cart += 1
}
}
})
methods
オプションの中にインラインで書いた処理と同じロジックのaddToCart
メソッドを追加します。ここで注意したいのが、methods
オプションの中ではthis.cart
を使ってVueインスタンスdataにあるcart
を参照します。
ショートカット
<button class="button" @click="addToCart">Add to Cart</button>
v-bind
の:
のようにv-on
も@
で短縮形で書くことができます。
class & styleバインディング
<div
...
class="green" >
</div>
green
クラスのCSSを要素にバインディング
<div
...
:style="{ color: green }" >
</div>
要素に直接スタイルをバインディング
computedプロパティ
const app = Vue.createApp({
data() {
return {
firstName: '太郎',
lastName: '田中'
...
}
},
computed: {
fullName: function () {
return this.firstName + ' ' + this.lastName
}
}
})
<h1>{{ fullName }}</h1>
Vueインスタンスdataのプロパティからcomputedプロパティを生成することができます。computedプロパティは一度アクセスされると内部メモリに保存され高速で処理ができます。そして、computedプロパティ(fullName
)が依存しているdataプロパティー(firstNmae
,lastName
)が変更された場合、再度関数が評価されfullName
が更新されます。