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 チュートリアル
Dockerコンテナのマウントディレクトリ情報のみを表示する docker 検査 --format ...
最近、goaccess を使って nginx ログを分析したいのですが、nginx ログの設定形式が...
公式ドキュメント: JSON 関数名前説明JSON_APPEND() JSONドキュメントにデータを...
docker-compose でコンテナ ポートを公開する方法は、ports と expose の ...
日々の運用・保守作業において、MySQL データベースのバックアップは重要です。ウェブサイトにとって...
面接で「MySQL に 1,000 万件のレコードをすばやく挿入するにはどうすればよいか」という質問...
<a href = "http://" style = "cur...
この記事では、MySQL データベースでよく使用される SQL ステートメントを例を使用して説明しま...
コードをコピーコードは次のとおりです。 window.location.href="zcb...
docker イメージを使用する場合、以下に示すように、REPOSITORY と TAG の両方が ...
ページ: ベース: <テンプレート> <div class="タブコンテ...
序文今日は、聖杯レイアウトとダブルウィングレイアウト、そしてそれらの違いについてお話しします。この2...
1. レンダリング 2. ソースコードhtml < 本文 > < div クラス ...
1. サーバー環境の構成: 1. ディスクパーティションを確認します。最近、あるプロジェクト内のサー...
なぜ?最も簡単に言えば、ピクセルは均等ではないということです。携帯電話に表示される写真はとても繊細に...