【Vue.js】で条件分岐して要素を出し分ける方法

Vue.jsでは、v-ifやv-showを使って要素を条件分岐し、表示・非表示を簡単に制御することができます。本記事では、これらのディレクティブを活用した実装方法を見ていきます。

v-ifを使った要素の表示・非表示

v-ifディレクティブは、指定した条件がtrueの場合のみ要素を表示し、falseの場合はDOMから完全に削除されます。例えば、以下のコードでは、isVisibleがtrueの場合に要素が表示されます。

<template>
  <div>
    <p v-if="isVisible">この要素は表示されます</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isVisible: true // trueなら要素が表示される
    }
  }
}
</script>

この方法は、要素を完全に削除する必要がある場合に効果的です。

v-else-ifとv-elseで条件分岐を行う

v-else-ifとv-elseを組み合わせることで、複数の条件をチェックし、異なる要素を表示できます。以下の例では、statusの値に応じて異なるメッセージが表示されます。

<template>
  <div>
    <p v-if="status === 'success'">成功しました</p>
    <p v-else-if="status === 'loading'">読み込み中...</p>
    <p v-else>エラーが発生しました</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      status: 'loading' // 状態によって表示されるメッセージが変わる
    }
  }
}
</script>

この方法は、複数の状態を持つアプリケーションで、表示する内容を柔軟に変更したい場合に便利です。

v-showでCSSによる表示・非表示

v-showは、条件に応じて要素のdisplayプロパティを切り替えます。DOMに残しておきたいが、条件により非表示にしたい場合に使われます。

<template>
  <div>
    <p v-show="isVisible">この要素はCSSで非表示になります</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isVisible: false // falseの場合、要素は非表示になるがDOMには残る
    }
  }
}
</script>

v-showを使うと、要素の存在は維持しつつ、表示・非表示を効率的に切り替えることができます。

複数条件の分岐

複雑な条件を使って要素を出し分けたい場合には、v-ifやv-else-ifを利用して条件を組み合わせることができます。次の例では、ageに基づいて異なるメッセージを表示します。

<template>
  <div>
    <p v-if="age < 18">未成年です</p>
    <p v-else-if="age >= 18 && age < 65">成人です</p>
    <p v-else>高齢者です</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      age: 30 // 年齢に基づいてメッセージが変わる
    }
  }
}
</script>

このように、複数の条件を扱うことで、より複雑なロジックを簡潔に実装できます。

まとめ

Vue.jsの条件分岐を利用することで、柔軟に要素の表示・非表示を制御できます。v-ifは要素を完全に削除する場合に、v-showはCSSで表示・非表示を切り替えたい場合に、それぞれ適しています。また、v-else-ifとv-elseを活用することで、複数の条件に基づいた分岐が可能になります。用途に応じて適切なディレクティブを選び、効率的なコンポーネント設計を目指しましょう。