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

推薦する

Node.jsミドルウェアの仕組みの詳細な説明

目次Express ミドルウェアとは何ですか? Expressミドルウェアを作成するための要件Exp...

Nginx の構成と HTTP 実装コード分析との互換性

OpenSSL を使用して SSL キーと CSR ファイルを生成するHTTPS を設定するには、秘...

JavaScriptの動作メカニズムの詳細な説明とイベントループについての簡単な説明

目次1. JavaScript がシングルスレッドなのはなぜですか? 2. タスクキュー3. イベン...

Vueデータ監視の原理の詳細な説明

目次1. はじめにII. 監視対象2.1 なぜオブジェクトを監視する必要があるのですか? 2.2 デ...

Docker Compose で利用可能な環境変数の詳細な説明

Compose のいくつかの部分は、何らかの方法で環境変数を扱います。このチュートリアルは、必要な情...

mysql 5.6.21 のインストールと設定の詳細な手順

1. 概要MySQL バージョン: 5.6.21ダウンロードアドレス: https://dev.my...

LinuxでのDockerのインストールチュートリアル

Docker パッケージは、デフォルトの CentOS-Extras リポジトリにすでに含まれていま...

要素テーブルからヘッダーを削除する方法

show-header属性を使用したドキュメントのヒントshow-header <el-テーブ...

GolangでMySQLデータベースを操作するための実装コード

序文Golang は、SQL データベースにアクセスするための database/sql パッケージ...

Docker でコンテナのポート マッピングを動的に変更する方法

前書き: Docker のポート マッピングは、多くの場合、Docker Run コマンド中に -p...

ディスクを破壊せずに Linux で dd コマンドを使用する方法

故障したストレージ ドライブからデータを救出する場合でも、アーカイブをリモート ストレージにバックア...

JavaScript で配列の最大値と最小値を実装する 6 つの方法

配列[1,8,5,4,3,9,2]が与えられた場合、配列の最大値9と最小値1を取得するアルゴリズムを...

VMware に Centos8 をインストールする詳細なチュートリアル

CentOS公式サイトアドレスhttps://www.centos.org/まず必要なファイルをダウ...

HTML テーブル マークアップ チュートリアル (37): 背景画像属性 BACKGROUND

テーブル ヘッダーの背景画像を設定します。任意の GIF または JPEG 画像ファイルを使用できま...

Dockerfile における ENTRYPOINT と CMD の違い

Docker システムの学習チュートリアルでは、Dockerfile を使用して Docker イメ...