Vueリストレンダリングキーの原理と機能の詳細な説明

Vueリストレンダリングキーの原理と機能の詳細な説明

リストレンダリングキーの原理と機能

キーはノードを識別するために使用されます。キーがインデックスの値にバインドされている場合、問題が簡単に発生する可能性があります。

1. 逆順にデータを追加または削除すると、不要な実際の DOM 更新が発生します。ページ効果は問題ありませんが、効率に問題が 2 つあります。

2. 分解に入力クラスのDOMも含まれる場合、不正なDOM更新が発生します。インターフェースに問題があります。

問題のケース分析:

ボタンをクリックしてオブジェクトをリストの先頭に追加します

    <div id="ルート">
        <button @click.once="add">ラオ・リューを追加</button>
        <ul>
            <li v-for="(p, index) 人" :key="index">
                {{p.name}}---{{p.age}}
                <入力タイプ="テキスト">
            </li>
        </ul>
    </div>
        var vm = 新しい Vue({
            el:"#ルート",
            データ:{
                人数:
                    {id:"001", 名前:"张三", 年齢:15},
                    {id:"002", 名前:"李思", 年齢:16},
                    {id:"003", 名前:"王五", 年齢:17}
                ]
            },
            メソッド: {
                追加(){
                    const p = {id:"004", name:"老刘", age:20}
                    this.persons.unshift(p)
                }
            },
        })

これが示された効果です

入力ボックスに名前を入力すると

ここに画像の説明を挿入

次にボタンをクリックして問題を観察します

ここに画像の説明を挿入

フォームの上部に Lao Liu が表示されますが、リストの内容は入力ボックスの内容と一致しません。

解決策: key="index"改為:key="id"

主要原則の分析

ここに画像の説明を挿入

初期データ

初期データを取得し、それに基づいて仮想DOMを生成します。仮想DOMを実際のDOMに変換します。

新しいデータ

新しいデータ(Lao Liuを含む)を取得し、データに基づいて仮想DOMを生成します。仮想DOMを初期データの仮想DOMと比較します(liのテキスト情報は異なりますが、入力は同じです。仮想DOMにはデータがありません。ページに入力されたコンテンツは実際のDOMに保存されます)テキスト情報-新しいデータは初期データを置き換え、入力コンテンツは保持されます

キーの役割

ここに画像の説明を挿入

要約する

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

以下もご興味があるかもしれません:
  • 知っておきたいVue.jsのリストレンダリングの詳しい解説
  • Vue リストレンダリングでキーが果たす役割の詳細な説明
  • vuejs v-for リストレンダリングの詳細な説明
  • Vue.js 学習チュートリアル リスト レンダリング 詳細説明
  • Vuejs 入門チュートリアル第1弾の詳しい解説(一方向バインディング、双方向バインディング、リストレンダリング、レスポンス機能)
  • Vueのリストレンダリングの詳細な説明

<<:  CSS ポインターイベント属性の使用に関する詳細な説明

>>:  W3C チュートリアル (6): W3C CSS アクティビティ

推薦する

MySQL データベース内の同じテーブルを同時にクエリして更新する方法

通常のプロジェクトでは、1 回の入札で同時にデータを更新および照会する必要があるという問題によく遭遇...

MySQLでテーブルインデックスを構築する方法

目次複数の種類のフィルタリングをサポート複数の範囲のクエリを避ける並べ替えを最適化するインデックスの...

CSV、Excel、SQL ファイルを MySQL にインポートするためのヒント

1. csvファイルをインポートする次のコマンドを使用します。 1.mysql> infile...

MySQL 学習ノート: 完全な SELECT ステートメントの使用例と詳細な説明

この記事では、MySQL 学習ノートの select ステートメントの完全な使用方法を例を使用して説...

Nginx ログ管理の概要

Nginx ログの説明アクセス ログを通じて、ユーザーの地理的起源、ジャンプ元、使用端末、特定の U...

Hadoopカウンターとデータクリーニングの適用

データクリーニング (ETL)コアビジネスの MapReduce プログラムを実行する前に、まずデー...

docker によってプルされたイメージがどこに保存されるかの詳細な説明

docker によってプルされたコマンドは、デフォルトでは /var/lib/docker/ フォル...

MySQL 全体または単一のテーブルデータのエクスポート

単一のテーブルをエクスポートするmysqldump -u ユーザー -p db名 テーブル名 >...

JS でモバイルのインタラクティブ エクスペリエンスを向上させる方法

目次1. 即時フィードバック1.1 ボタンからの即時フィードバック1.2 継続的なフィードバック1....

Docker ケース分析: MySQL データベース サービスの構築

目次1 設定ディレクトリとデータディレクトリを作成する3 イメージからホストに構成ファイルをコピーす...

FTP環境設定ソリューション(vsftpd)の詳細な説明

1. vsftpdコンポーネントをインストールするインストールコマンド: [root@ink4t ~...

HTMLはマーキーを使用してテキストを左右にスクロールします

コードをコピーコードは次のとおりです。 <本文> //マーキーの助けを借りて<MA...

Serv-U FTPとADの完璧な統合ソリューションの詳細な説明

会社が現在使用しているソリューションを確認するためにバックエンドにログインしました。使用される FT...

XHTML 入門チュートリアル: フォーム タグ

<br />フォームはユーザーが情報を送信するための重要なチャネルです。このセクションで...