ホームページ >ウェブフロントエンド >Vue.js >vue のキーを詳細に分析して、キーが何に使用できるかを確認します。
キーの用途は何ですか?次の記事では、vue のキーを詳細に分析し、キーが何に使用できるかを確認します。皆さんのお役に立てれば幸いです。
キーの用途は何ですか?
仮想 DOM アルゴリズム (diff アルゴリズム)
で使用され、VNodes## を比較するときに新しいノードと古いノードを識別する場合には使用されません。
、Vue は動的要素を最小限に抑えるアルゴリズムを使用し、
同じタイプの要素を可能な限り所定の場所で変更/再利用しようとします
、存在しないキーを持つ要素を削除/破棄します
#vnode: 仮想ノード、仮想ノード
DOM ツリーの要素をまだ覚えていますか? ドキュメント、要素、ノード
仮想ノードとは何ですか?
簡単に言えば、ページ上で vue によってレンダリングされるノードは仮想ノードです
<template id="my-app"> <div class="title" style="font-size: 30px; color: red;">哈哈哈</div> </template>
ここでの div は仮想ノードであり、vue ではこの形式で存在します
const vnode = { type: "div", props: { class: "title", style: { "font-size": "30px", color: "red", }, }, children: "哈哈哈", };
理解できないのは、children 属性かもしれません。div には子要素がないので、値は「ははは」だけです。子要素がある場合は、最後のノードまで人形をネストし続けます。 . 、
children: [ { // 子元素 }, { // 子元素 } ],
2 のような vDOM 仮想 DOM
は実際の DOM と同じです。実際のノードがある場合は、実際の DOM も存在します。 DOM. そして、仮想ノードが存在する場合は、仮想 DOM が存在しますもちろん、仮想 DOM ツリーにも同様のことが当てはまります。VNode ツリーもあります。つまり、心配する必要はありません。おそらく次のとおりです。
<template id="my-app"> <div> <div> <p></p> <p></p> <ul> <li></li> <li></li> <li></li> </ul> </div> </div> </template>
Convert to a virtual DOM Tree:
仮想 DOM が実際の DOM にレンダリングされると、これにはコンポーネントが関係しますが、これについては後で機会があればお話します
##3 レンダリング プロセス
##4 ケース: f
を挿入します。前の内容を理解したら、本題に取り掛かりましょう。必要なケースは 1 つだけです。キーの役割を十分に理解してください。 から始めましょう (キーを追加せずに) 最初にこの単純なケースを見てみましょう <ul>
<li v-for="item in letters">{{item}}</li>
</ul>
data() {
return {
letters: ['a', 'b', 'c', 'd']
}
},
methods: {
insertF() {
this.letters.splice(2, 0, 'f');
}
},
この質問の目的は、f# を挿入することであることがわかります。
方法 1 (通常の方法)
手順: 以前の dom を直接削除し、新しい vnode で再レンダリングします
方法 2 (キーなしの差分アルゴリズム)注: これは、キーがない場合の vue のデフォルトの差分アルゴリズムです。対応するソース コードVue は判定文を通してキーを持ってきたかどうかを判定します
以下はキーがない場合の状況です。 key
次に、
patchUnkeyedChildren()をチェックすると、差分アルゴリズムの実行プロセスを表示できます
簡単な説明を次に示します。
古い vnode と新しい vnode を取得します
#古い vnode > 新しい vnode の場合、古い vnode ノードをアンインストールします
patchKeyedChildren()
Method相違点が見つかったときに最初からパッチを適用します (ここでは、c !== f)、ブレーク
末尾からパッチし、異なることが判明した場合 (ここでは c !== f)、ブレーク
これまで、a、b、c、d have は実際の DOM にレンダリングされます。唯一の違いは f です。判断するために f
を探し始めましょう。古い vnode
以上がvue のキーを詳細に分析して、キーが何に使用できるかを確認します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。