v-for タグにキーが追加されていない場合。 <!DOCTYPE html> <html lang="ja"> <ヘッド> <メタ文字セット="UTF-8"> <meta http-equiv="X-UA-compatible" content="IE=edge"> <meta name="viewport" content="width=デバイス幅、初期スケール=1.0"> <script src="../../js/vue.js"></script> <title>v-for キーについて</title> </head> <本文> <div id="アプリ"> <div> <input type="text" v-model="名前"> <button @click="add">追加</button> </div> <ul> <li v-for="(リスト内の項目、インデックス)"> <input type="checkbox"> {{item.name}} </li> </ul> </div> <script type="text/javascript"> constアプリ = 新しいVue({ el: '#app', データ() { 戻る { 名前: ''、 新しいID: 3, リスト: [ { id: 1, name: '张三' }, { id: 2, 名前: 'Li Si' }, { id: 3、名前: '王五' } ]、 }; }, 計算: { }, メソッド: { 追加() { //これはunshiftであることに注意してください this.list.unshift({ id: ++this.newId, name: this.name }) this.name = '' } }, }); </スクリプト> <スタイルスコープ> </スタイル> </本文> </html> 李斯を選択して趙柳を加えた後、選択された人物は張三になりました。 v-for にキーがある場合を見てみましょう。 <!DOCTYPE html> <html lang="ja"> <ヘッド> <メタ文字セット="UTF-8"> <meta http-equiv="X-UA-compatible" content="IE=edge"> <meta name="viewport" content="width=デバイス幅、初期スケール=1.0"> <script src="../../js/vue.js"></script> <title>v-for キーについて</title> </head> <本文> <div id="アプリ"> <div> <input type="text" v-model="名前"> <button @click="add">追加</button> </div> <ul> <li v-for="(item, index) in list" :key="item.id"> <input type="checkbox"> {{item.name}} </li> </ul> </div> <script type="text/javascript"> constアプリ = 新しいVue({ el: '#app', データ() { 戻る { 名前: ''、 新しいID: 3, リスト: [ { id: 1, name: '张三' }, { id: 2, 名前: 'Li Si' }, { id: 3、名前: '王五' } ]、 }; }, 計算: { }, メソッド: { 追加() { //これはunshiftであることに注意してください this.list.unshift({ id: ++this.newId, name: this.name }) this.name = '' } }, }); </スクリプト> <スタイルスコープ> </スタイル> </本文> </html> Li Si を選択して Zhao Liu を追加した後、選択された人物は依然として Li Si であり、変更はありません。 これは、Vue の下部にある Diff アルゴリズムによるものです。 diff アルゴリズムの処理方法は、次の図に示すように、操作の前後で DOM ツリーの同じレベルにあるノードをレイヤーごとに比較することです。 レイヤー内に同一のノード、つまりリスト ノードが多数ある場合、Diff アルゴリズムの更新プロセスもデフォルトで上記の原則に従います。 たとえば、次のような状況を考えてみましょう。 B と C の間に F を追加したいと考えています。Diff アルゴリズムのデフォルトの実装は次のとおりです。 つまり、C を F に、D を C に、E を D に更新し、最後に E を挿入します。これは非効率的ではありませんか? したがって、Diff アルゴリズムがノードを正しく識別し、新しいノードを挿入する正しい場所を見つけられるように、キーを使用して各ノードを一意に識別する必要があります。 vue のリスト ループには、key = "一意の識別子" を追加する必要があります。一意の識別子は、アイテム内の id インデックスなどになります。vue コンポーネントは再利用性が高いため、Key を追加するとコンポーネントの一意性を識別できます。各コンポーネントをより適切に区別するために、キーの主な機能は、仮想 DOM を効率的に更新することです。 要約するこの記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: HTMLポップアップ透明レイヤーインスタンスのサイズを設定でき、比例することができます
>>: Ubuntu のインストール グラフィック ドライバーと Cuda チュートリアル
MySQL SQL ステートメントのパフォーマンス チューニングの簡単な例サーバー開発を行う際には、...
数日前、CSS を使用して三角形の矢印を実装する方法について記事を書きました。 目的の効果は達成され...
目次問題のシナリオ:解決: 1. フィールドを個別にチェックする2. フォームフィールドの下のフィー...
ページをナビゲートする2つの方法宣言型ナビゲーション: リンクをクリックしてナビゲーションを実現する...
まず最初に、適切なブラウザを選択します。私が Chrome を選択したのは、その強力なデバッグ ツー...
1. 制限の基本的な実装一般的に、クライアントは、pageNo (ページ番号) と pageSize...
これで、autocomplete と呼ばれる input の属性を使用できるようになりました。オート...
1. GraphVis 公式サイトにアクセスして、対応する js をダウンロードします。js の新し...
この記事では、カルーセルマップの効果を実現するためのjQueryの具体的なコードを参考までに共有しま...
Nginxのクロスドメイン設定は次のようには機能しません サーバー{ 聞く 80; server_n...
目次序文文章1. JavaScriptコードの実行プロセスに関連する概念2. 実行コンテキストと実行...
今日会社から課題をもらったのですが、効果図は以下のとおりです。 どのような効果を実現したいかは特に決...
1. コモンズCommonjsはNode.jsのカスタムモジュールですCommonjs 仕様は、Ja...
1. 基本的な使い方これは MutationObserver コンストラクターを通じてインスタンス化...
Truncate table ステートメントは、テーブル内のすべてのデータを削除/切り捨てるために使...