時給単価UP【3大特典付き】
コーディングテクニック集100選⋙

【解説】Vue.jsのv-ifとv-showの違いと使い分け【コード付き】

記事内に広告を含みます

パソ君
パソ君

・vue.jsのv-ifとv-showの使い方は?

・どう使い分ける?

こんな疑問にお答えします。

Vue.jsにてv-ifやv-showを使って、要素を表示・非表示したりすることありますよね。

ただどう使いわかるのか不明。。

今回は自分用のメモとして、v-ifとv-showの違いや使い分けを記述しました!

ジト
ジト

参考にどうぞ

ということで、この記事では「v-ifとv-showの違いと使い分け」について解説していきます!

この記事でわかること

・v-ifの使い方
・v-showの使い方
・v-ifとv-showの違いと使い分け

【解説】Vue.jsの「v-if」の使い方

まず初めに「v-if」の使い方について、簡単に見ていきましょう。

  • 「v-if」の使用例
  • 「v-else」「v-else-if」の使用例
  • 「templateタグ」で囲む使用例

順に解説してきます。

➀:「v-if」の使用例

「v-if」は下記のように「v-if=”条件”」で記述します。

<!-- 表示 -->
<p v-if="true">おはようございます</p>

<!-- 非表示 -->
<p v-if="false">おはようございます</p>

真だったら表示、偽だったら非表示になります。

下記のように変数に真偽値を入れておいて、条件に入れても表示制限が可能です。

<div id="app">
  <!-- 表示 -->
  <p v-if="block">おはようございます</p>
  <!-- 非表示 -->
  <p v-if="none">おはようございます</p>
</div>
const app = Vue.createApp({
  data: () => ({
    block: true,
    none: false
  })
}).mount('#app')

非表示のされ方

ちなみに「v-if」を使って非表示された場合、コメントアウトで非表示にされます。

➁:「v-else」「v-else-if」の使用例

「v-if」は「v-else」「v-else-if」と一緒に使用可能です。

「v-if」が偽だったら「v-else-if」にいき、それも偽だったら「v-else」へと判定にいきます。

<div id="app">
  <!-- もしnumが0だったら表示 -->
  <p v-if="num === 0">おはようございます</p>
  <!-- もしnumが3だったら表示 -->
  <p v-else-if="num === 3">こんにちは</p>
  <!-- それ以外の時に表示 -->
  <p v-else>こんばんは</p>
</div>
const app = Vue.createApp({
  data: () => ({
    num: 3
  })
}).mount('#app')

➂:「templateタグ」で囲む使用例

複数の要素をまとめて条件定義したい場合は、「templateタグ」を使用すれば可能です。

下記のように「templateタグ」に対して、「v-if」を使用します。

<!-- 複数の要素を表示 -->
<template v-if="true">
  <h1>タイトル</h1>
  <p>テキストが入ります</p>
  <p>テキストが入ります</p>
</template>

<!-- 複数の要素を非表示 -->
<template v-if="false">
  <h1>タイトル</h1>
  <p>テキストが入ります</p>
  <p>テキストが入ります</p>
</template>

【解説】Vue.jsの「v-show」の使い方

続いて「v-show」の使い方について、簡単に見ていきましょう。

「v-show」は下記のように「v-show=”条件”」で記述します。

<!-- 表示 -->
<p v-show="true">おはようございます</p>

<!-- 非表示 -->
<p v-show="false">おはようございます</p>

下記のように変数に真偽値を入れておいて、条件に入れても表示制限が可能です。

<div id="app">
  <!-- 表示 -->
  <p v-show="block">おはようございます</p>
  <!-- 非表示 -->
  <p v-show="none">おはようございます</p>
</div>
const app = Vue.createApp({
  data: () => ({
    block: true,
    none: false
  })
}).mount('#app')

非表示のされ方

ちなみに「v-show」を使って非表示された場合、CSSの「display: none;」で非表示にされます。

【解説】Vue.jsのv-ifとv-showの違いと使い分け【コード付き】

最後に「v-if」と「v-show」の特徴や違いを紹介していきます。

  • 「v-if」の特徴
  • 「v-show」の特徴
  • 「v-if」と「v-show」の違いと使い分け

順に見ていきましょう。

「v-if」の特徴

「v-if」の特徴は主にこちら。

  • 「v-else」「v-else-if」が使用可能
  • コメントアウトで非表示にする
  • 要素をDOMから削除or追加する
  • 切り替えのコストは高め(速度は遅い)

表示・非表示するたびにDOMから削除・追加するため、切り替えコストが高めです。

また初期状態がfalseだと描画されないので、ロードを軽くできます。

何度も表示・非表示することがないのであれば「v-if」を使うのが良いかと。

「v-show」の特徴

「v-show」の特徴は主にこちら。

  • 「v-else」「v-else-if」が使えないので
    単一の条件でのみ使用可能
  • 「display: none;」で非表示にする
  • 要素をDOMから削除or追加する
  • 切り替えのコストは低い(速度は速い)

初期の条件に関わらず、最初は描画するため初期描画コストは高めです。

ただ切り替えはCSSの「display: none;」で行われるので、切り替えコストは低め。

頻繁に切り替える場合は「v-show」を使うのが良いかと。

「v-if」と「v-show」の違いと使い分け

頻繁に切り替わらない時は(ログイン状態の分岐など)v-ifを使い、
頻繁に切り替わるであろう時は(タブ切り替えなど)はv-showを使うのがおすすめかと。

【解説】Vue.jsのv-ifとv-showの違いと使い分け【コード付き】:まとめ

  • v-ifはコメントアウトで非表示される
    切り替えコストが高め
  • v-showはdisplay:none;で非表示される
    切り替えコストは低め
ジト
ジト

「v-if」や「v-show」を使う時はためしてみてね!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA