1. Beginnen wir mit dem Fazit
Lassen Sie uns die Rolle und das Implementierungsprinzip des Schlüssels nacheinander besprechen. 2. Die Rolle des SchlüsselsSchlüssel ist ein in Vue verwendeter Bezeichner. Genauer gesagt wird der Schlüssel im virtuellen DOM in Vue verwendet und erscheint nicht im realen DOM. 2.1 Ein BeispielZeigt eine Gruppe von Personalinformationen in einem Listenformat an. <!DOCTYPE html> <html lang="de"> <Kopf> <meta charset="UTF-8"> <title>Das Schlüsselprinzip</title> <!--Vue vorstellen--> <script type="text/javascript" src="../js/vue.js"></script> </Kopf> <div id="Wurzel"> <h2>Mitarbeiterliste</h2> <ul> <li v-for="(p,index) in Personen"> {{p.name}}-{{p.age}} </li> </ul> </div> <Text> <Skripttyp="text/javascript"> const vm = neuer Vue({ el:'#Wurzel', Daten:{ Personen: {'id':'001', 'name':'Name', 'age':'18'}, {'id':'002', 'name':'Li Si', 'alter':'19'}, {'id':'003', 'name':'Wang Wu', 'alter':'20'} ] } }) </Skript> </body> </html> Diese HTML-Datei wird wie unten gezeigt im Browser geöffnet. Die obige Beispiel-HTML-Datei verwendet keinen Schlüssel und es scheint kein Problem zu geben. Natürlich gibt es kein Problem, wenn Sie die Daten einfach anzeigen, ohne den Schlüssel zu schreiben. Fügen wir nun dem obigen Beispiel einen Schlüssel hinzu. Hier wird die ID jedes Datensatzes als Schlüssel verwendet. <li v-for="(p,index) in Personen" :key="p.id"> {{p.name}}-{{p.age}} </li> Das Anzeigeergebnis nach dem Hinzufügen des Schlüssels ist exakt dasselbe wie das Ergebnis im obigen Bild. Wenn wir das Element in einem Browser anzeigen, wird der Schlüssel nicht angezeigt. Bisher können wir zwei Schlussfolgerungen ziehen: 1. Es wird nur zur Datenanzeige verwendet, und das Nichtschreiben des Schlüssels hat keine Auswirkungen. 2. Der Schlüssel wird nicht im realen DOM angezeigt Selbst wenn Sie keinen Schlüssel schreiben, verwendet Vue den Schlüssel auch beim Generieren des echten DOM. Der Standardwert ist der Datenindex (Index). Wir ersetzen den Schlüssel durch den Index und die angezeigten Daten ändern sich nicht. <li v-for="(p,index) in Personen" :key="index"> {{p.name}}-{{p.age}} </li> 2.2 Ändern Sie das obige BeispielZeigen Sie den Index basierend auf den Personalinformationen an und fügen Sie eine Schaltfläche hinzu, um die Personalinformationen zur Kopfzeile hinzuzufügen Ändern Sie die obige HTML-Datei leicht. <!DOCTYPE html> <html lang="de"> <Kopf> <meta charset="UTF-8"> <title>Das Schlüsselprinzip</title> <!--Vue vorstellen--> <script type="text/javascript" src="../js/vue.js"></script> <link rel="Symbol" href="../favicon.ico" Typ="Bild/x-Symbol" /> </Kopf> <div id="Wurzel"> <h2>Mitarbeiterliste</h2> <button @click="add">Einen Lao Liu hinzufügen</button> <ul> <li v-for="(p,index) in Personen" :key="index"> {{p.name}}-{{p.age}}-{{index}} </li> </ul> </div> <Text> <Skripttyp="text/javascript"> const vm = neuer Vue({ el:'#Wurzel', Daten:{ Personen: {'id':'001', 'name':'Name', 'age':'18'}, {'id':'002', 'name':'Li Si', 'alter':'19'}, {'id':'003', 'name':'Wang Wu', 'alter':'20'} ] }, Methoden:{ hinzufügen(){ const p = {'id':'004', 'name':'Alter', 'age':'40'} diese.personen.unshift(p) } } }) </Skript> </body> </html> Wir können sehen, dass die Indizes von Zhang San, Li Si und Wang Wu jeweils 0, 1 und 2 sind. Klicken Sie auf die Schaltfläche, um ein neues Zeichen hinzuzufügen. Der Index ändert sich zu diesem Zeitpunkt. Das neu hinzugefügte Zeichen „Lao Liu“ erhält den Index 0. Das scheint richtig, aber auch falsch zu sein. Natürlich ist es nicht falsch, einfach über Indizes zu diskutieren. Lassen Sie uns anhand eines neuen Beispiels erklären, was falsch ist. 2.3 Das Beispiel nochmals anpassenAnstatt den Index anzuzeigen, zeigen Sie ein Eingabefeld an. Schreiben Sie den Nachnamen jeder Person in das Eingabefeld dahinter und beobachten Sie die Änderungen in den Originaldaten, nachdem die neuen Daten eingefügt wurden. Ändern Sie das HTML leicht <li v-for="(p,index) in Personen" :key="index"> {{p.name}}-{{p.age}} <Eingabetyp="Text"> </li> Der tatsächliche Effekt ist wie unten dargestellt An diesem Punkt scheint alles in Ordnung zu sein. Als Nächstes ist der Moment gekommen, Zeuge eines Wunders zu werden. Als wir Lao Liu hinzufügten, ging etwas schief, was anders war als erwartet. Dies ist der Fall, wenn der Schlüssel ein Index ist. Wenn er in eine eindeutige Kennung für die Daten geändert wird, tritt dieses Problem nicht auf. <li v-for="(p,index) in Personen" :key="p.id"> {{p.name}}-{{p.age}} <Eingabetyp="Text"> </li> Hey, das ist es, was wir wollen. Wenn die Liste Eingaben enthält, zerstören nachfolgende Vorgänge die ursprüngliche Reihenfolge, was zu einem DOM-Fehler führt 3. Umsetzungsprinzip des SchlüsselsUm das Implementierungsprinzip des Schlüssels zu erklären, müssen wir ein sehr wichtiges Konzept von Vue vorstellen – [Virtual DOM]. Bei einem gegebenen Datensatz muss Vue diese Daten auf der Seite rendern. Zuerst muss es einen [virtuellen DOM] generieren und dann basierend auf dem [virtuellen DOM] einen [realen DOM] generieren. Wenn sich die Daten ändern, generiert Vue einen [neuen virtuellen DOM]. Beachten Sie, dass dieser [neue virtuelle DOM] nicht direkt einen [neuen realen DOM] generiert, da der virtuelle DOM sonst nutzlos wäre. Was Vue macht, ist, den auf Grundlage der neuen Daten generierten [neuen virtuellen DOM] mit dem vorherigen [realen DOM] zu vergleichen. Wenn sie gleich sind, können sie direkt verwendet werden („nimm es, wie es ist“); wenn sie unterschiedlich sind, wird ein neues DOM-Objekt generiert. In diesem Prozess spielt der Schlüssel eine sehr wichtige Rolle. Lassen Sie uns es anhand des letzten Beispiels analysieren. 1. Wenn der Schlüssel ein Index ist.Der Prozess zum Generieren von [realem DOM] basierend auf Daten läuft wie folgt ab: (Beachten Sie, dass der Inhalt im Eingabefeld im realen DOM in der folgenden Abbildung nach der Seitengenerierung manuell hinzugefügt wird.) Fügen Sie dann das Zeichen "Lao Liu" hinzu und erhalten Sie einen neuen Datensatz Vue verwendet neue Daten, um [neuen virtuellen DOM] zu generieren Beim Generieren des realen DOM müssen Sie den neu generierten virtuellen DOM mit dem ursprünglichen realen DOM vergleichen (einzeln analysieren). Im Vergleich zum ersten ist der Schlüssel 0 und die Daten mit dem Schlüssel 0 im alten DOM werden gefunden. Es wird festgestellt, dass „Lao Liu-40“ und „Zhang San-18“ unterschiedlich sind und die neuen Daten „Lao Liu-40“ auf der Seite gerendert werden; später wird festgestellt, dass es sich um dasselbe Eingabefeld handelt, sodass kein erneutes Rendern erforderlich ist und der Inhalt des ursprünglichen realen DOM direkt verwendet werden kann. Der erste Inhalt wird angezeigt und dieses Eingabefeld enthält auch Zhang Sans Nachnamen. Im Vergleich zum zweiten ist der Schlüssel 1 und die Daten mit dem Schlüssel 1 im alten DOM werden gefunden. Es wird festgestellt, dass „Zhang San-18“ und „Li Si-19“ unterschiedlich sind und die neuen Daten „Zhang San-18“ auf der Seite gerendert werden; später wird festgestellt, dass es sich um dasselbe Eingabefeld handelt, sodass kein erneutes Rendern erforderlich ist und der Inhalt des ursprünglichen realen DOM direkt verwendet werden kann. Der zweite Inhalt wurde angezeigt und dieses Eingabefeld enthielt auch Li Sis Nachnamen. Das Gleiche gilt auch danach. Rückblickend auf diesen Prozess ist der Schlüssel die eindeutige Kennung des Objekts im virtuellen DOM, die die „Identitätsinformationen“ der Daten identifiziert. Vue vergleicht den Inhalt im virtuellen DOM anhand dieser „Identitätskennung“. Die ursprüngliche Absicht des Designs besteht darin, Ressourcenkosten zu sparen und das Rendern doppelter Teile zu vermeiden. In diesem Beispiel führt dies nicht nur zu Effizienzproblemen, sondern führt auch zur Darstellung eines falschen DOM, was sehr schwerwiegende Folgen hat. 2. Wenn der Schlüssel die ID ist.Geben Sie nach dem Hinzufügen von „Lao Liu“ direkt den Vergleich des alten und neuen DOM ein. Im Vergleich zum ersten lautet der Schlüssel „004“, der im alten DOM nicht vorhanden ist. Daher werden „老刘-40“ und ein neues Eingabefeld direkt generiert. Beim Vergleich mit dem zweiten lautet der Schlüssel „001“. Es stellt sich heraus, dass die Daten mit dem Schlüssel „001“ im alten DOM identisch sind. Daher werden „Zhang San-18“ und das Eingabefeld direkt verwendet. … Schließlich wird der richtige DOM generiert, wodurch Ressourcenaufwand gespart wird. ZusammenfassenEs wird empfohlen, als Schlüssel die eindeutige Kennung der Daten zu verwenden, beispielsweise ID, Ausweisnummer, Handynummer etc. Normalerweise werden diese Daten vom Backend bereitgestellt. Sofern die ursprüngliche Datenreihenfolge durch nachfolgende Vorgänge nicht zerstört wird, ist die Verwendung des Index als Schlüssel kein Problem. Dieser Artikel endet hier. Ich hoffe, er kann Ihnen helfen. Ich hoffe auch, dass Sie mehr Inhalten auf 123WORDPRESS.COM mehr Aufmerksamkeit schenken können! Das könnte Sie auch interessieren:
|
<<: HTML-Auszeichnungssprache - Referenz
>>: Verwenden einer Cursorschleife zum Lesen temporärer Tabellen in gespeicherten MySQL-Prozeduren
1 Laden Sie MySQL8 von der offiziellen Website he...
1. Installieren Sie weniger Abhängigkeiten: npm i...
Herzattribute opacity: .999 erstellt einen Stapel...
Bereits zu Kernel 2.6-Zeiten wurde ein neues Sich...
1. Erzwingen Sie keinen Zeilenumbruch und beenden ...
Inhaltsverzeichnis 1. innodb_buffer_pool_size 2. ...
1. Grammatik: <meta name="Name" conte...
Das Daten-URI-Schema ermöglicht es uns, Daten mith...
Installation, Konfiguration, Start, Anmeldung und...
Inhaltsverzeichnis Vorwort Umfeld Installieren Er...
Umgebung: Mindestinstallation von CentOS 7.1.1503...
Inhaltsverzeichnis Vorwort Stellt der Interviewer...
Es gibt eine Interviewfrage, die Folgendes erforde...
In diesem Artikel wird der spezifische Code der L...
Inhaltsverzeichnis Mysql Master-Slave-Synchronisi...