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

推薦する

htmlはハイパーリンク付きの新しいウィンドウを開き、ウィンドウのプロパティを制御できます。

1. HTMLハイパーリンクによって開かれるウィンドウのサイズコードをコピーコードは次のとおりです...

Dockerを使用してMySQLデータベースをインストールするDeepinの詳細な説明

まずMySQLソースをクエリするdocker 検索 mysql公式ウェブサイトにアクセスしてイメージ...

CSS の 6 つの重要なセレクター (3 秒で覚える)

出典: https://blog.csdn.net/qq_44761243/article/deta...

MySQL で自動インクリメントシーケンスを実装するためのサンプルコード

1. シーケンステーブルを作成する テーブル `sequence` を作成します ( `name` ...

Ubuntu 18.04 は mysql 5.7.23 をインストールします

以前、Ubuntu 16.04 に MySQL をスムーズにインストールしました。今回、Ubuntu...

Ubuntuサーバーの一般的なコマンドの概要

以下のコマンドのほとんどは、コンソール/ターミナル/シェルで入力する必要があります。 'su...

MySQL 接続例外とエラー 10061 の解決方法

MySQL は、スウェーデンの会社 MySQL AB によって開発されたリレーショナル データベース...

mysql 8.0.18 mgr のインストールと切り替え機能

1. システムインストールパッケージ yum -y インストール make gcc-c++ cmak...

IE6/7 における a.getAttribute(href,2) 問題の分析と解決

簡単な説明<br />IE6および7では、一般的なaタグ(HTMLで記述され、DOM操作...

Dockerとイメージの操作方法

ミラーを探すDocker Hubのウェブサイトからイメージを検索できます。Docker Hubのウェ...

Linux で Grafana をインストールし、InfluxDB モニタリングを追加する方法

Grafana をインストールします。公式 Web サイトでは、直接インストールできる Ubuntu...

小さな画面のモバイルデバイス向けにWebページを設計する際に注意すべきこと

その理由は、このタイプの Web ページが WAP と呼ばれるワイヤレス プロトコルから生成されたた...

Vueの子コンポーネントが親コンポーネントのメソッドを呼び出す場合の詳細な説明

1. 子コンポーネントのthis.$parent.eventを通じて親コンポーネントメソッドを直接呼...

Vue 組み込みコンポーネントのキープアライブでの LRU アルゴリズムの使用

目次Vue の keep-alive 組み込みコンポーネントの使用でもこのアルゴリズムが使用されます...