Vueでよく使うディレクティブまとめ:v-if, v-for, v-bind などの使い方

Vue.jsは、シンプルで宣言的な構文により、動的なUI構築を効率よく実現できます。その中でも「ディレクティブ」は、DOMの振る舞いを制御する重要な機能です。本記事では、Vueで特によく使われる v-if、v-for、v-bind を中心に、使い方と具体例を交えて解説します。

v-if / v-else-if / v-else:条件によって要素を切り替える

v-if は、条件に応じてDOM要素を描画・非描画するディレクティブです。

<template>
  <div>
    <p v-if="isLoggedIn">ログイン済み</p>
    <p v-else>ゲストユーザー</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isLoggedIn: true,
    };
  },
};
</script>

ポイント

  • v-else-ifv-else と組み合わせることで、条件分岐が可能。
  • 非表示になるのではなく、DOM自体が生成されないため、パフォーマンス上も有利。

v-show:表示・非表示を切り替える(CSSベース)

v-show も要素の表示・非表示を制御できますが、こちらは CSS の display: none を切り替えるだけです。

<p v-show="isVisible">表示されるかも</p>

違い

  • v-if:初回はDOMを生成しない。切り替えコストは高い。
  • v-show:初回からDOMを生成。切り替えは高速。

v-for:リストのループ出力

リストレンダリングは v-for を使って簡単に実現できます。

<ul>
  <li v-for="(item, index) in items" :key="index">
    {{ index + 1 }}. {{ item }}
  </li>
</ul>

<script>
export default {
  data() {
    return {
      items: ['Apple', 'Banana', 'Cherry'],
    };
  },
};
</script>

ポイント

  • :key は省略せず必ず指定する(仮想DOMの差分更新で重要)。
  • 配列やオブジェクトもループ可能。

v-bind:属性へのデータバインディング

v-bind はHTML属性にデータをバインドするために使います。

<img v-bind:src="imageUrl" v-bind:alt="imageAlt">
<!-- 省略記法 -->
<img :src="imageUrl" :alt="imageAlt">
data() {
  return {
    imageUrl: 'https://example.com/logo.png',
    imageAlt: 'ロゴ画像',
  };
}

使用例:クラスやスタイルの動的バインド

<div :class="{ active: isActive }">クラスの切り替え</div>
<div :style="{ color: textColor }">スタイルの切り替え</div>

v-model:フォームとの双方向バインディング

ユーザー入力とデータを同期させる場合は v-model が便利です。

<input v-model="username" placeholder="ユーザー名を入力">
<p>こんにちは、{{ username }} さん!</p>

v-on:イベントリスナーを追加する

v-on はクリックなどのイベントをハンドリングします。

<button v-on:click="increment">カウントアップ</button>
<!-- 省略記法 -->
<button @click="increment">カウントアップ</button>

<p>カウント:{{ count }}</p>

<script>
export default {
  data() {
    return {
      count: 0,
    };
  },
  methods: {
    increment() {
      this.count++;
    },
  },
};
</script>

その他の便利ディレクティブ

ディレクティブ役割
v-preVueの解析をスキップする
v-cloakマウント前に一時的に非表示にする
v-once一度だけ描画し、以後更新しない(パフォーマンス向上)

まとめ:Vueディレクティブを使いこなして効率的な開発を

Vueのディレクティブは、テンプレート内の振る舞いを簡潔に定義できる非常に強力な機能です。
特に v-ifv-forv-bindv-modelv-on などは、日常的に使う基本ディレクティブとして必須です。まずはこれらをマスターすることで、より読みやすく、保守しやすいVueアプリケーションを構築できるようになります。

Contact

ウェブサイトの制作や運用に関わる
お悩みやご相談
お気軽にお問い合わせ下さい

ウェブサイトと一口に言っても、企業サイトやECサイト、ブログ、SNSなど、その“カタチ”は目的に応じてさまざまであり、構築方法や使用する技術も大きく異なります。株式会社コナックスでは、お客様のご要望やブランドの個性を丁寧に汲み取り、最適なウェブサイトの“カタチ”をご提案いたします。

デザイン、ユーザビリティ、SEO対策はもちろん、コンテンツ制作やマーケティング戦略に至るまで、あらゆるフェーズでお客様のビジネスに寄り添い、成果につながるウェブサイトづくりをサポートいたします。私たちは、ウェブサイトの公開をゴールではなくスタートと捉え、お客様のビジネスの成功に向けて共に伴走してまいります。