Vue.js データバインディングの使い方
データ バインディングは、開発者がデータ モデルをビュー レイヤーに接続できるようにする Vue.js のコア機能の 1 つです。これにより、最小限の労力でデータと DOM 要素を同期させることができます。Vue.js は、一方向および双方向のデータ バインディングを含むさまざまな種類のデータ バインディング手法を提供し、開発をより効率的かつリアクティブにします。
この記事では、一方向データ バインディング、双方向データ バインディング、およびそれぞれの実用的な例を取り上げながら、Vue.js でデータ バインディングを操作する方法について説明します。
Vue.js におけるデータバインディングの種類
Vue.js は、主に 2 種類のデータ バインディングを提供します。
- 一方向データ バインディング: データは、コンポーネントのデータ モデルからビューへと一方向に流れます。
- 双方向データ バインディング: データは、データ モデルからビューへ、またビューからデータ モデルへ双方向に流れます。
v-bind による一方向データバインディング
Vue.js の一方向データ バインディングは、v-bind
ディレクティブを使用して実現されます。このディレクティブは、属性をデータ内の式に動的にバインドします。これは通常、src
、href
、alt
などの HTML 属性をバインドするために使用されます。
以下は、v-bind
を使用して、画像要素の src
属性をバインドする例です。
<template>
<div>
<img v-bind:src="imageUrl" alt="Dynamic Image" />
</div>
</template>
<script>
export default {
data() {
return {
imageUrl: 'https://example.com/image.jpg'
};
}
};
</script>
v-bind
の省略形はコロン (:
) です。上記の例は次のように書き直すことができます。
<img :src="imageUrl" alt="Dynamic Image" />
v-model による双方向データバインディング
Vue.js の双方向データ バインディングは、v-model
ディレクティブを使用して実現されます。これにより、フォーム入力要素とデータ モデルの間にバインディングが作成され、変更がデータとビューの両方に自動的に反映されます。
以下は、入力要素との双方向データバインディングに v-model
を使用する例です。
<template>
<div>
<input v-model="message" placeholder="Enter your message" />
<p>Your message is: {{ message }}</p>
</div>
</template>
<script>
export default {
data() {
return {
message: ''
};
}
};
</script>
この例では、入力フィールドに入力すると、message
データ プロパティが自動的に更新され、<p>
要素に更新された値がリアルタイムで表示されます。
v-model によるフォーム要素のバインド
v-model
ディレクティブは、チェックボックス、ラジオボタン、選択などのさまざまなフォーム要素で使用できます。次に例を示します。
チェックボックスバインディング
<template>
<div>
<input type="checkbox" v-model="isChecked" /> Checked: {{ isChecked }}
</div>
</template>
<script>
export default {
data() {
return {
isChecked: false
};
}
};
</script>
ラジオボタンのバインディング
<template>
<div>
<input type="radio" id="option1" value="Option 1" v-model="selectedOption" />
<label for="option1">Option 1</label>
<br>
<input type="radio" id="option2" value="Option 2" v-model="selectedOption" />
<label for="option2">Option 2</label>
<p>Selected: {{ selectedOption }}</p>
</div>
</template>
<script>
export default {
data() {
return {
selectedOption: ''
};
}
};
</script>
バインディングを選択
<template>
<div>
<select v-model="selectedValue">
<option disabled value="">Please select one</option>
<option>Option A</option>
<option>Option B</option>
</select>
<p>Selected: {{ selectedValue }}</p>
</div>
</template>
<script>
export default {
data() {
return {
selectedValue: ''
};
}
};
</script>
v-once によるワンタイムデータバインディング
v-once
ディレクティブは、データをビューに 1 回だけバインドするために使用されます。最初のレンダリング後、データ モデルへの変更はビューに反映されません。これは、リアクティブである必要のない静的コンテンツに便利です。
<template>
<div v-once>
This content is rendered only once: {{ message }}
</div>
</template>
<script>
export default {
data() {
return {
message: 'Hello, Vue.js!'
};
}
};
</script>
まとめ
Vue.js のデータ バインディングは、開発者が最小限の労力で動的でインタラクティブなアプリケーションを作成できる強力な機能です。v-bind
による一方向バインディング、v-model
による双方向バインディング、v-once
による 1 回限りのバインディングなど、さまざまな種類のデータ バインディング手法を理解して活用することで、より効率的で応答性の高いアプリケーションを構築できます。