v-show/v-if の使用シナリオと違い

  1. v-if: これは true の条件付きレンダリングです。条件が false の場合、要素は DOM にレンダリングされません。条件に応じて要素を動的に追加したり削除したりするため、レンダリングとアンロードの処理が必要になります。
  2. v-show: これは単純な条件付き表示です。条件が false の場合、要素には display: none CSS スタイルが追加され、要素が非表示になります。レンダリングやアンロードを行う必要がないため、パフォーマンスが向上します。
同じ点:

すべての非表示コンポーネントを動的に表示します

違い:
  1. V-show の非表示は CSS の手段であり、要素に display:none を追加すると、dom 要素は DOM ツリー上に残ります。

v-if の非表示とは、dom 要素全体を追加または削除することであり、DOM ツリーから削除されます。

  1. v-show の切り替えオーバーヘッドは小さいですが、初期レンダリングにオーバーヘッドが発生するため、切り替えが頻繁に行われるシーンに適しています。

  2. v-if の切り替えオーバーヘッドは高いです。初期条件が false の場合、初回レンダリングの必要はありません。切り替えの頻度が低い場合、または切り替えない場合でも、v-if を使用することをお勧めします。

  3. v-if が false から true に変化すると、アンインストールされたコンポーネントの beforeCreate、create、beforeMount、マウントされたフックがトリガーされ、true から false に変化すると、コンポーネントの beforeDestory メソッドと destroy メソッドがトリガーされます。 show は、コンポーネントの非表示の Any ライフサイクル フックをトリガーしません。

  4. 落とし穴と注意点(開発中に発生): v-show はテンプレートで使用すると無効ですが、v-if は有効です。

例えば:

たとえば、ユーザーがボタンをクリックしたときにモーダル ボックスを表示する必要がある場合

<template>
  <div>
    <button @click="showModal = true">Show Modal </button>
    <div v-if="showModal" class="modal">
      Modal Content
    </div>
  </div>
</template>

<script>
export default {
    
    
  data() {
    
    
    return {
    
    
      showModal: false
    };
  }
};
</script>

この例では、 がshowModalの場合はtrueモーダル ボックスがレンダリングされ、それ以外の場合はレンダリングされません。モーダルが表示されていない場合はレンダリングされないため、使用するとv-ifアプリケーションのパフォーマンスが向上します。

おすすめ

転載: blog.csdn.net/m0_61696809/article/details/129351686