Vue の v-if と v-for の違いは何ですか
v-if と v-for の違い: 1. 異なる関数。v-if 命令は、コンテンツの一部を条件付きでレンダリングするために使用されます。このコンテンツは、命令は true 値を返します レンダリング; v-for ディレクティブは、配列に基づいてリストをレンダリングします。 2. 優先順位が異なる v-for の方が v-if よりも優先され、if 判定の場合は v-if よりも先に v-for が判定されます。
1. v-if と v-for の役割
v-if ディレクティブは、コンテンツの一部を条件付きでレンダリングするために使用されます 。このコンテンツは、ディレクティブ の式が true 値を返した場合にのみ 表示されます。
v-for ディレクティブは、 配列に基づいてリスト をレンダリングします。 v-for ディレクティブには、item in items という形式の特別な構文が必要です。ここで、items はソース データ配列またはオブジェクトであり、item は反復される配列要素のエイリアスです。
キー値 を設定し、各キー値が一意であることを確認することをお勧めします。これにより、 diff アルゴリズムの最適化が容易になります 。
この 2 つの使用法の違いは次のとおりです:<div v-if="isShow" >123</div> <li v-for="item in items" :key="item.id"> {{ item.label }} </li>
2. 2 つの優先順位
使用中、v-for は v-if よりも優先されます
v-if と v-for はどちらも vue テンプレート システムの命令ですvue テンプレートの場合がコンパイルされると、コマンド システムが実行可能なレンダリング関数に変換されます
例 p タグを記述し、v-if および v-for
<div id="app"> <p v-if="isShow" v-for="item in items"> {{ item.title }} </p> </div>
const app = new Vue({ el: "#app", data() { return { items: [ { title: "foo" }, { title: "baz" }] } }, computed: { isShow() { return this.items && this.items.length > 0 } } })
ƒ anonymous() { with (this) { return _c('div', { attrs: { "id": "app" } }, _l((items), function (item) { return (isShow) ? _c('p', [_v("\n" + _s(item.title) + "\n")]) : _e() }), 0) } }
最初の結論は v-for の方が v-if よりも優先度が高いということです
<div id="app"> <template v-if="isShow"> <p v-for="item in items">{{item.title}}</p> </template> </div>
ƒ anonymous() { with(this){return _c('div',{attrs:{"id":"app"}}, [(isShow)?[_v("\n"), _l((items),function(item){return _c('p',[_v(_s(item.title))])})]:_e()],2)} }
ソースコードの場所:\vue-dev\src\compiler\codegen\index.js
export function genElement (el: ASTElement, state: CodegenState): string { if (el.parent) { el.pre = el.pre || el.parent.pre } if (el.staticRoot && !el.staticProcessed) { return genStatic(el, state) } else if (el.once && !el.onceProcessed) { return genOnce(el, state) } else if (el.for && !el.forProcessed) { return genFor(el, state) } else if (el.if && !el.ifProcessed) { return genIf(el, state) } else if (el.tag === 'template' && !el.slotTarget && !state.pre) { return genChildren(el, state) || 'void 0' } else if (el.tag === 'slot') { return genSlot(el, state) } else { // component or element ... }
##3 . 注意事項同じ要素に対して v-if と v-for を同時に使用しないでください。パフォーマンスの無駄が発生します (各レンダリングが最初にループし、次に条件判定が行われます)
これを回避する場合 この場合、テンプレートは外層にネストされており(ページレンダリングではdomノードは生成されません)、この層でv-if判定が行われ、内部でv-forループが行われます
<template v-if="isShow"> <p v-for="item in items"> </template>
条件がループ内に表示される場合は、計算された属性を通じて事前に表示する必要のない項目を除外できます。
computed: { items: function() { return this.list.filter(function (item) { return item.isShow }) } }
理由: v-for は v-if よりも優先されます。毎回配列全体を走査する必要があるため、不要な計算が発生し、パフォーマンスに影響します。
たとえば、v-for を使用してループします。ページ上に 100 個の li タグがありますが、index=97 の li タグのコンテンツのみが表示され、残りはすべて非表示になります。
100 個のリストで 1 つのデータのみを使用する必要がある場合でも、配列全体をループします。<ul> <li v-for="item in list" v-if="item.actived">{{item.name}}</li> </ul>
解決策: computed を使用します
<ul> <li v-for="item in activeList">{{item.name}}</li> </ul> computed: { activeList() { return this.list.filter(val => { return val.actived; }); } },
[関連する推奨事項:
vuejs ビデオ チュートリアル以上がVue の v-if と v-for の違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









ページの部分的な更新を実現するには、ローカル コンポーネント (dom) の再レンダリングを実装するだけで済みます。 Vue でこの効果を実現する最も簡単な方法は、v-if ディレクティブを使用することです。 Vue2 では、v-if 命令を使用してローカル dom を再レンダリングすることに加えて、新しい空のコンポーネントを作成することもできます。ローカル ページを更新する必要がある場合は、この空のコンポーネント ページにジャンプしてから、再びジャンプします。 beforeRouteEnter ガードを空白のコンポーネントに配置します。元のページ。以下の図に示すように、Vue3.X の更新ボタンをクリックして赤枠内の DOM を再読み込みし、対応する読み込みステータスを表示する方法を示します。 Vue3.X の scriptsetup 構文のコンポーネントのガードには o しかないので、

最終的な効果は、VueCropper コンポーネントのyarnaddvue-cropper@next をインストールすることです。上記のインストール値は Vue3 用です。Vue2 の場合、または他の方法を参照したい場合は、公式 npm アドレス: 公式チュートリアルにアクセスしてください。また、コンポーネント内で参照して使用するのも非常に簡単です。必要なのは、対応するコンポーネントとそのスタイル ファイルを導入することだけです。ここではグローバルに参照しませんが、import{userInfoByRequest}from'../js/api を導入するだけです。 ' コンポーネント ファイルにインポートします。import{VueCropper}from'vue-cropper&

vue3+ts+axios+pinia で無意味なリフレッシュを実現 1. まず、プロジェクト内の aiXos と pinianpmipinia をダウンロードします--savenpminstallaxios--save2. axios リクエストをカプセル化-----ダウンロード js-cookienpmiJS-cookie-s// aixosimporttype{AxiosRequestConfig , AxiosResponse}from"axios";importaxiosfrom'axios';import{ElMess

Vue を使用してカスタム要素を構築する WebComponents は、開発者が再利用可能なカスタム要素 (カスタム要素) を作成できるようにする一連の Web ネイティブ API の総称です。カスタム要素の主な利点は、フレームワークがなくても、任意のフレームワークで使用できることです。これらは、異なるフロントエンド テクノロジ スタックを使用している可能性のあるエンド ユーザーをターゲットにする場合、または最終アプリケーションを使用するコンポーネントの実装の詳細から切り離したい場合に最適です。 Vue と WebComponents は補完的なテクノロジであり、Vue はカスタム要素の使用と作成に対する優れたサポートを提供します。カスタム要素を既存の Vue アプリケーションに統合したり、Vue を使用してビルドしたりできます。

デジタルテクノロジーの継続的な進歩に伴い、フロントエンド開発はますます人気のある職業になっています。 Vue3 は、そのシンプルさ、使いやすさ、効率性、安定性により、ますます多くの開発者の最初の選択肢となっています。このうち v-for 関数は、Vue3 のリストデータの描画に使用されるコア関数の 1 つです。この記事では、実際の開発の問題を解決するために Vue3 の v-for 関数をよりよく使用できるように、Vue3 の v-for 関数について詳しく説明します。 1. 基本構文 v-for 関数の基本構文は次のとおりです。 <divv-

Vue エラー: v-if ディレクティブは条件付きレンダリングに正しく使用できません。解決方法は? Vue 開発では、条件に基づいてページ内の特定のコンテンツをレンダリングするために v-if ディレクティブがよく使用されます。ただし、v-if 命令を正しく使用しても、期待した結果が得られず、エラー メッセージが表示されるという問題が発生することがあります。この記事では、この問題の解決策について説明し、理解を助けるサンプル コードをいくつか紹介します。 1. 問題の説明 通常、Vue テンプレートの v-if ディレクティブを使用して、

Vue は、動的な Web ページや複雑なアプリケーションを簡単に構築できる最新の JavaScript フレームワークです。 Vue では、v-for を使用してループ構造を簡単に作成し、データを反復的にレンダリングできます。一部の特定のシナリオでは、v-for を使用して動的並べ替えを実装することもできます。この記事では、v-for を使用して Vue で動的並べ替え手法を実装する方法と、いくつかのアプリケーション シナリオと例を紹介します。 1. v-for を使用して簡単にします

Vue で v-for を使用するためのベスト プラクティスとパフォーマンスの最適化方法 はじめに: Vue 開発では、v-for 命令を使用するのが非常に一般的です。これにより、配列またはオブジェクトのデータを簡単にトラバースしてテンプレートにレンダリングできます。ただし、v-for を不適切に使用すると、大規模なデータを処理するときにパフォーマンスの問題が発生する可能性があります。この記事では、v-for ディレクティブを使用する際のベスト プラクティスを紹介し、パフォーマンスを最適化する方法をいくつか紹介します。ベスト プラクティス: Vue で v-for 命令を使用して、一意の Key 値を使用してデータの各項目をレンダリングする場合、次のことを行う必要があります。
