【Vue.js】v-ifで条件分岐させる方法

Vue.jsは、フロントエンド開発者にとって非常に強力で柔軟なフレームワークです。その中でも、v-ifディレクティブは、条件付きで要素を表示・非表示にするために非常に役立ちます。本記事では、v-ifの基本的な使い方から、複数の条件分岐、ネストされた条件分岐までを詳しく解説します。

基本的な使い方

まずは、v-ifの基本的な使い方を見てみましょう。以下の例では、ボタンをクリックすることでテキストの表示・非表示を切り替えています。

<div id="app">
  <p v-if="isVisible">このテキストは表示されます</p>
  <button @click="toggleVisibility">表示/非表示を切り替える</button>
</div>
new Vue({
  el: '#app',
  data: {
    isVisible: true
  },
  methods: {
    toggleVisibility() {
      this.isVisible = !this.isVisible;
    }
  }
});

複数の条件分岐

次に、複数の条件分岐が必要な場合の使い方を見てみましょう。v-else-ifやv-elseを使用することで、条件に応じた異なる要素を表示できます。

<div id="app">
  <p v-if="status === 'success'">成功しました!</p>
  <p v-else-if="status === 'error'">エラーが発生しました。</p>
  <p v-else>ステータスが不明です。</p>
  <button @click="setStatus('success')">成功</button>
  <button @click="setStatus('error')">エラー</button>
  <button @click="setStatus('unknown')">不明</button>
</div>
new Vue({
  el: '#app',
  data: {
    status: 'unknown'
  },
  methods: {
    setStatus(newStatus) {
      this.status = newStatus;
    }
  }
});

ネストされた条件分岐

最後に、ネストされた条件分岐の例を紹介します。ネストされたv-ifを使用することで、より複雑な条件分岐を実現できます。

<div id="app">
  <div v-if="user">
    <p>ようこそ、{{ user.name }}さん!</p>
    <p v-if="user.isAdmin">管理者としてログインしています。</p>
  </div>
  <p v-else>ログインしてください。</p>
  <button @click="login">ログイン</button>
  <button @click="logout">ログアウト</button>
</div>
new Vue({
  el: '#app',
  data: {
    user: null
  },
  methods: {
    login() {
      this.user = { name: 'ユーザー名', isAdmin: true };
    },
    logout() {
      this.user = null;
    }
  }
});

まとめ

Vue.jsのv-ifディレクティブを使用すると、簡単に条件付きで要素を表示・非表示にすることができます。基本的な使い方から複数の条件分岐、ネストされた条件分岐まで、様々な状況に対応可能です。これを活用して、より動的でインタラクティブなVue.jsアプリケーションを作成しましょう。