タイトル: v-bindによるデータ連携
SEOタイトル: Vue.js v-bind 完全ガイド (属性 / クラス / スタイル / Composition API)
| この記事の要点 |
|
v-bind の基本
v-bind は HTML 属性の値を JavaScript 式で動的に決定するための Vue ディレクティブです。短縮形 : が広く使われます。
リンク
リンク
クラスバインディング
...
...
...
...
...
スタイルバインディング
...
...
...
...
...
...
オブジェクトを一括バインド
v-bind の修飾子
| 修飾子 | 意味 | 例 |
|---|---|---|
.prop | 属性ではなく DOM プロパティとしてバインド | :innerHtml.prop="html" |
.attr | 明示的に HTML 属性として (Vue 3) | :value.attr="val" |
.camel | ケバブケース属性名をキャメルに | :view-box.camel="box" |
.sync (Vue 2) | 双方向バインド (v-model:propName で代替) | 非推奨 |
Composition API での ref / computed 連携
{{ doubled }}
ラベル
...
typical use cases
| シーン | v-bind の使い方 |
|---|---|
| ボタンの活性状態 | :disabled="loading" |
| 選択中タブのハイライト | :class="{ active: tab === current }" |
| 動的画像 | :src="userAvatar" |
| テーマカラー | :style="{ '--brand': brandColor }" |
| 進捗バー | :style="{ width: percent + '%' }" |
| 属性ホワイトリスト一括 | v-bind="$attrs" (透過) |
| 外部リンク区別 | :target="isExternal ? '_blank' : null" |
v-bind と v-on (双方向: v-model)
よくあるミス
| ミス | 正解 |
|---|---|
:href="{{ url }}" | :href="url" (二重カッコ不要) |
href="{{ url }}" | :href="url" (Mustache は属性に使えない) |
:class="active" (文字列のつもり) | :class="'active'" または class="active" |
:style="color: red" | :style="{ color: 'red' }" |
| true/false なのに残る | Boolean 属性に v-bind を使う |
FAQ
Q: v-bind と {{ }} の違いは?
A: {{ }} (Mustache) はテキストコンテンツ専用。属性値には使えないので v-bind (短縮 :) を使います。
Q: クラスを class と :class 両方書ける? Q:
A: 可能。Vue は両者をマージします。 は OK。
v-bind="$attrs" って何?
A: 親から渡されたが props として宣言していない属性すべてを子要素にパススルー。ラッパーコンポーネントで定番。