これは、次のような状況で特に役立ちます。
Vue における v-for ループの最も基本的な使用法は次のとおりです。 <ul> <li v-for='製品内の製品'> {{製品名}} </li> </ul> ただし、この記事では、 始めましょう。 1. v-forループでは常にキーを使用するまず、ほとんどの 各要素に一意のキー参照があれば、より予測可能な方法で DOM を操作できます。 <ul> <li v-for='products 内の product' :key='製品._id' > {{製品名}} </li> </ul> 2. 特定のスコープ内でv-forループを使用するほとんどの場合、 たとえば、オンライン ストアのページネーション システムを作成し、1 ページあたり 10 個の製品のみを表示したいとします。変数を使用して現在のページ番号を追跡することで、次のようにページングを処理できます。 <ul> <li v-for='インデックス 10' :key='インデックス'> {{ 製品[ページ * 10 + インデックス] }} </li> </ul> 3. ループ内でのv-ifの使用を避ける非常によくある間違いは これは直感的に思えるかもしれませんが、大きなパフォーマンスの問題につながる可能性があります。VueJS つまり、コンポーネントは各要素を反復処理してから、 v-if を v-for と一緒に使用すると、条件に関係なく、配列内のすべての項目が反復処理されます。 // 悪い習慣です! <ul> <li v-for='products 内の product' :key='製品._id' v-if='product.onSale' > {{製品名}} </li> </ul> それで、問題は何でしょうか? 再レンダリングのたびに、販売されている 3 つの製品はまったく変更されていないにもかかわらず、Vue は数千のアイテムを反復処理する必要があります。 v-if と 次に、2 つの代替アプローチについて説明します。 4. 計算プロパティまたはメソッドを使用する上記の問題を回避するには、テンプレートでデータを反復処理する前にデータをフィルタリングする必要があります。これを行うには非常によく似た 2 つの方法があります。
どちらを選択するかはあなた次第ですが、両方の方法について簡単に説明しましょう。 まず、 <テンプレート> <ul> <li v-for="productsOnSale 内の製品" :key="product._id"> {{製品名}} </li> </ul> </テンプレート> <スクリプト> エクスポートデフォルト{ データ () { 戻る { 製品: [] } }, 計算: { 製品販売: 関数 () { this.products.filter(product => product.onSale) を返します } } } </スクリプト> 利点は次のとおりです。
フィルター メソッドを使用するコードはほぼ同じですが、フィルター メソッドを使用すると、テンプレート内の値にアクセスする方法が変わります。ただし、フィルタリング プロセスに変数を渡せるようにしたい場合は、メソッド ルートを選択する必要があります。 <テンプレート> <ul> <li v-for="productsOnSale(50)) 内の製品" :key="product._id"> {{製品名}} </li> </ul> </テンプレート> <スクリプト> エクスポートデフォルト{ データ () { 戻る { 製品: [] } }, メソッド: { 販売中の製品 (最大価格) { this.products.filter(product => product.onSale && product.price < maxPrice) を返します } } } </スクリプト> 5. ループの周りに要素のレイヤーをラップするリストをレンダリングするかどうかを決定するときに たとえば、ユーザーがログインしているときにのみ製品リストをレンダリングしたい場合はどうすればよいでしょうか。 エラーコード: <ul> <li v-for='products 内の product' :key='製品._id' v-if='isLoggedIn' <!-- ここ --> > {{製品名}} </li> </ul> これの何が問題なのですか? 以前と同じです。 最終的に何もレンダリングされない場合でも、何千もの要素をループします。 この例では、簡単な解決策は v-if ステートメントを移動することです。 より良いコード! <ul v-if='isLoggedIn'> <!-- ずっと良くなりました --> <li v-for='products 内の product' :key='製品._id' > {{製品名}} </li> </ul> これははるかに優れています。isLoggedIn 6. ループ内でのインデックスへのアクセス配列を反復処理して各要素にアクセスする代わりに、各項目のインデックスを追跡することもできます。 これを行うには、アイテムの後にインデックス値を追加する必要があります。これは非常にシンプルですが、ページング、リスト インデックスの表示、ランキングの表示などに役立ちます。 <ul> <li v-for='(products, index) in products' :key='product._id' > 製品番号 {{ index }}: {{ product.name }} </li> </ul> 7. 反復オブジェクトこれまでは、配列を反復処理するために 要素のインデックスにアクセスする場合と同様に、ループに別の値を追加する必要があります。単一の引数を持つオブジェクトをループすると、すべての項目がループされます。 別のパラメータを追加すると、アイテムとキーが取得されます。 3 番目の引数を追加すると、v-for ループのインデックスにもアクセスできるようになります。 製品内のすべての属性を反復処理するとします。コードは次のようになります。 <ul> <li v-for='(products, index) in products' :key='product._id' > <span v-for='(item, key, index) in product' :key='key'> {{ アイテム }} </span> </li> </ul> 結論は: これで、Vue v-for ループを書く 7 つの方法についての記事は終了です。Vue v-for ループの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Linux システムでのスケジュールされたタスクの紹介
>>: HTML6 は折りたたみメニューとアコーディオンメニューのサンプルコードを実装します
導入分散について話すときは、分散構成センター、分散ログ、分散リンク トラッキングなどについて考える必...
キー修飾子キーボード イベントをリッスンする場合、詳細なキーを確認する必要があることがよくあります。...
目次1. オブジェクトの変更検出2. オブジェクトに関する質問配列変更検出3.1 背景3.2 実装I...
目次導入1. Tomcatを起動するコード2. Tomcatフレームワーク3. コンテナを作成する ...
目次序文フィルターとは何かフィルターの使い方グローバルフィルターローカルフィルターフィルターは直列に...
目次序文分析する初期レンダリング方法初期最適化さらなる最適化方法2序文ほとんどのミニプログラムには、...
「/」はルートディレクトリ、「~」はホームディレクトリです。 Linux ストレージはツリー状にマウ...
前面に書かれたNginx は単なるリバース プロキシおよび負荷分散サーバーではなく、電流制限、キャッ...
目次序文オプションの連鎖ヌル結合呼び出されていない関数のチェック他の序文TypeScript 3.7...
ツール型ウェブサイトについて、まず疑問に思うのは、無数のオンラインウェブサイトの中で、どのようなウェ...
HTML 仕様書では、画像の crossorigin 属性が導入されています。適切なヘッダー情報 ...
序文Tomcat 内のすべてのリクエストは Servlet によって処理され、静的リソースも例外では...
目次序文ディープページングを制限すると遅くなるのはなぜですか?サブクエリによる最適化B+ツリー構造の...
sudo コマンドを使用すると、信頼できるユーザーは別のユーザー (デフォルトでは root ユーザ...
この記事では、参考までにMySQL 8.0.16のインストールと設定方法のグラフィックチュートリアル...