Vueのリストレンダリングの詳細な説明

Vueのリストレンダリングの詳細な説明

1. v-for: 配列の内容を走査する(よく使われる)

inはofに置き換えることもできる

<本文>
	<div id="div1">
		<li v-for='(p,i) 人' :key=i>
			{{p.name}}--{{p.age}}
			<!-- 張--18
				 リー--19
				 劉--17 -->
		</li>
	</div>
</本文>
<script type="text/javascript">
	Vue.config.productionTps = false です
 	新しいVue({
		el:"#div1",
		データ:{
			人数:
				{id:'001',name:"张",age:18},
				{id:'002',name:"李",age:19},
				{id:'002',名前:"劉",年齢:17},
			]
		}
	})
</スクリプト>

2. v-for: オブジェクトのプロパティをトラバースする(よく使われる)

<本文>
	<div id="div1">
		<li v-for='(p,k) 人' :key=k>
			{{p}}--{{i}}
			<!-- 張--名前
				 18歳 -->
		</li>
	</div>
</本文>
<script type="text/javascript">
	Vue.config.productionTps = false です
 	新しいVue({
		el:"#div1",
		データ:{
			人数:
				名前:"张",
				年齢:18
			}
		}
	})

3. 文字列のトラバース(一般的ではない)

<本文>
	<div id="div1">
		<li v-for='(p,i) in str' :key=i>
			{{p}}--{{i}}
			<!-- a--0 
				 b--1
				 c--2
				 d--3
				 e--4 -->
		</li>
	</div>
</本文>
<script type="text/javascript">
	Vue.config.productionTps = false です
 	新しいVue({
		el:"#div1",
		データ:{
			文字列:"abcde"
		}
	})
</スクリプト>

4. 指定された回数だけトラバースする(あまり使用されない)

<本文>
	<div id="div1">
		<li v-for='(p,i) 5' :key=i>
			{{p}}--{{i}}
			<!-- 1--0
				 2--1
				 3--2
				 4--3
				 5--4 -->
		</li>
	</div>
</本文>

5. キーの機能と原理

上記ではインデックスをキーとして使用していますが、DOM を乱れた順序で変更したり、入力コンテンツがある場合にはエラーが発生します。インデックスは、ページを変更せずにページをレンダリングする場合にのみキーとして使用できます。

ID、携帯電話番号、メールアドレスなどのデータの一意の識別子をキーとして使用することを強くお勧めします。

1. 仮想DOMにおけるキーの役割:

key は仮想 DOM オブジェクトの識別子です。データが変更されると、Vue は新しいデータに基づいて新しい仮想 DOM を生成します。次に、Vue は新しい仮想 DOM と古い仮想 DOM の違いを比較します。比較ルールは次のとおりです。

2. 比較ルール:

(1)新しい仮想DOMと同じキーが古い仮想DOMに見つかります。

①. 仮想DOMの内容が変更されていない場合は、以前の実DOMをそのまま使用します。

②. 仮想DOMの内容が変更されると、新しい実DOMが生成され、ページ内の以前の実DOMが置き換えられます。

(2)新しい仮想DOMと同じキーが古い仮想DOM内に見つからない場合は、新しい実DOMが作成され、ページにレンダリングされます。

3. インデックスをキーとして使用する場合に発生する可能性のある問題:

1. データが逆の順序で追加または削除され、順序が崩れた場合:

不要な実際の DOM 更新が生成されます ==> インターフェース効果は良好ですが、効率は低くなります。

2. 構造に入力クラスの DOM も含まれている場合:

間違った DOM 更新が発生します ==> インターフェイスに問題があります。

4. 開発中にキーを選択するにはどうすればいいですか?

1. ID、携帯電話番号、ID番号、学生番号、その他の一意の値など、各データの一意の識別子をキーとして使用するのが最適です。

2. 逆順でデータを追加または削除するなど、順序を破壊する操作がなく、リストが表示用にのみレンダリングされる場合は、インデックスをキーとして使用しても問題ありません。

要約する

この記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。

以下もご興味があるかもしれません:
  • Vue の条件付きレンダリングとリストレンダリングの詳細な理解
  • Vue.js の条件付きレンダリング命令の簡単な分析
  • Vue 条件付きレンダリング v-if と v-show
  • Vue 基本チュートリアル: 条件付きレンダリングとリストレンダリング
  • vue の v-for ディレクティブはリストのレンダリングを完了します
  • Vue リストのレンダリング、並べ替え、フィルタリングの詳細な説明
  • Vue 条件付きレンダリングとリストレンダリング

<<:  CSS スタイルを使用して表のフォントを垂直中央に配置する方法

>>:  Flex プログラム Firefox で中国語を入力すると文字化けするバグ

推薦する

Echarts 基本入門: 棒グラフと折れ線グラフの一般的な構成

1eChartsの基本手順4つのステップ1 DOMコンテナを見つける2 初期化3 設定オプション4 ...

32 典型的な列/グリッドベースのウェブサイト

列ベースの Web デザインのインスピレーションをお探しの場合は、32 個のクラシックな列/グリッド...

CentOS 7 構成 Tomcat9+MySQL ソリューション

Tomcatの設定まずTomcatをインストールするTomcatのインストールは、Tomcatのイン...

JavaScript カスタム カレンダー効果

この記事では、JavaScriptカスタムカレンダーエフェクトの具体的なコードを参考までに紹介します...

Vueはキャンバスの手書き入力を使用して中国語を認識します

効果画像: 序文:最近、屋外の大画面プロジェクトに取り組んでいました。システムの入力方法は使いにくか...

CSS 背景と境界タグの例の詳細な説明

1. CSS背景タグ1.背景色を設定するbackground-ground-color プロパティは...

円形グラデーションプログレスバー効果を実現する CSS サンプルコード

実装のアイデア一番外側は大きな円(グラデーションカラー)グラデーションの円を覆うように、内側に半円を...

3つの簡単な例を使ってハイパーリンクの下線を削除する方法

ハイパーリンクの下線を削除するには、スタイルシート CSS を使用する必要があります。当面は CSS...

フォーム送信ページの更新がジャンプしない

1. ソースコードの設計コードをコピーコードは次のとおりです。 <!DOCTYPE html ...

js キャンバスで円形の水のアニメーションを実現

この記事の例では、円形の水のアニメーションを実現するためのキャンバスの具体的なコードを参考までに共有...

jQuery をベースにリスト ループ スクロールを実装するためのヒント (超簡単)

良いアイデアを見つけたので記録しました。私は以前、スクロール効果を実現するためにjQueryを使用し...

CSS3 は本当に SCSS に取って代わるのでしょうか?

Web ページのスタイル設定に関しては、プロジェクトで純粋な CSS または SCSS (および他...

MySql のクラッシュとサービスの起動失敗の解決策

私は長い間PHPに触れてきましたが、インストール環境は非常に不慣れです。多くの問題に遭遇しました。B...

Dockerは異常なコンテナ操作を排除する

この初心者は、Docker を学び始めたばかりの頃にこのような問題に遭遇しました。記録しておきます。...

入力タイプとは何を意味し、入力を制限する方法

入力を制限する一般的な方法1. ボタンが押されたときに点線のボックスを消すには、入力に属性値hide...