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 アクティビティ

推薦する

Windows Apache 環境で SSL 証明書を展開して、Web サイトを https 対応にする方法

SSL 証明書の使用についてはここでは説明しません。SSL 証明書を導入する必要がある友人は、すでに...

Dockerfileの指示と基本構造の説明

Dockerfile を使用すると、ユーザーはカスタム イメージを作成できます。基本構造Docker...

Ubuntu 18.04 コマンドでタッチパッドを無効/有効にする

Ubuntu では、ショートカット キーでタッチパッドをオフにできない状況によく遭遇します。この問題...

Dockerコンテナが起動直後に終了する問題を解決する

最近、Docker がコンテナの起動時に特定のプロセスを直接実行できるようにする方法を調べていたとこ...

Linux環境にJDKとTomcatをインストールする詳細な手順

目次1. JDKをインストールする手動インストール2. トムキャット1. JDKをインストールする注...

JavaScript関数の詳細な紹介

任意の数のステートメントを関数を通じてカプセル化することができ、いつでもどこでも呼び出して実行できま...

動的なセカンダリメニューを実現するためのCSS

シンプルなセカンダリメニューを動的に実装するマウスを第 1 レベルのラベル上に置くと、マウスが小さな...

Linux カーネル デバイス ドライバーのメモリ管理に関する注意事項

/************************ * Linux メモリ管理 *********...

WeChatアプレットがSMSログインを実装

目次1. インターフェース効果のプレビュー2.uViewのインストール3.uViewの設定3.1 m...

Tomcat をサービスとして登録する際に注意すべき点のまとめ

Tomcat をサービスとして登録する場合の注意点は次のとおりです。 インターフェースを開いたら、以...

Linux でディスクをマウントし、起動時に自動的にマウントするように設定する方法

皆さんの時間は貴重だと承知しているので、プロセス コマンドを直接書き留めておきます。設定できます。原...

JavaScript の組み込み Date オブジェクトの詳細な説明

目次日付オブジェクト日付オブジェクトの作成新しい日付()日付を取得する()取得日()月を取得する()...

さまざまな MySQL テーブルソートルールのエラーの分析

MySQL が複数のテーブルを結合するときに、次のエラーが報告されます: [Err]1267 – 操...

HTMLのマーキータグは、シームレスなスクロールマーキー効果を実現します。

<marquee> タグはペアで表示されるタグです。最初のタグ <marquee...

MySQL カーソルの原理と使用例の分析

この記事では、例を使用して MySQL カーソルの原理と使用方法を説明します。ご参考までに、詳細は以...