3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Vue.js】v-ifとv-showによる表示、非表示の切り替えの違い

Last updated at Posted at 2021-01-28
sample.vue

<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>

<div id="app">
  <button @click="changeShow">ボタン</button>
  <p v-if="isActive">if</p>
  <p v-show="isActive">show</p>
</div>

<script>
  new Vue({
    el: '#app',
    data: {
      isActive: true
    },
    methods: {
      changeShow() {
        this.isActive = !this.isActive
      }
    }
  })
</script>

上記の様な、ボタンをクリックすると、「if」の文字と「show」の文字の表示・非表示が切り替わるプログラムがある。

v-ifの場合は、条件がfalseの場合、DOM自体

<p v-if="isActive">if</p>

が消滅する。

v-showの場合は、条件がfalseの場合、DOMに display:none が追加されて非表示となる。

<p style="display:none">show</p>

v-showのデメリット

・非表示時の挙動は、ページ読み込み時に一旦、全てのDOMを読み込んでからdisplay:noneで非表示にするため、DOMそのものを読み込まないv-ifに比べて初期読み込み時の動作が重くなる。

・v-elseのように、falseの場合に別処理を実行することができない。

・タグには使用できない。(templeteタグはそもそもhtmlに表示されないので、display:noneのつけようがない)

v-ifのデメリット

表示・非表示の切り替え時に、DOMを直接操作するため、display:noneを与えるだけのv-showに比べて、動作が重くなる。

適材適所は?

頻繁に表示・非表示を切り替える必要がある場合は、"v-show"。それ以外は、"v-if"を使うのがベター。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?