Detaillierte Erklärung des Prinzips und der Funktion des Vue-Listen-Rendering-Schlüssels

Detaillierte Erklärung des Prinzips und der Funktion des Vue-Listen-Rendering-Schlüssels

Das Prinzip und die Funktion des Listen-Rendering-Schlüssels

Der Schlüssel dient zur Identifizierung des Knotens. Wenn der Schlüssel an den Wert des Index gebunden ist, können leicht Probleme auftreten:

1. Wenn die Daten in umgekehrter Reihenfolge hinzugefügt oder gelöscht werden, treten unnötige echte DOM-Aktualisierungen auf. Der Seiteneffekt ist in Ordnung, aber die Effizienz ist 2 Probleme.

2. Wenn die Dekonstruktion auch das DOM der Eingabeklasse umfasst, erfolgt ein falsches DOM-Update - es liegt ein Problem mit der Schnittstelle vor

Fallanalyse des Problems:

Klicken Sie auf die Schaltfläche, um ein Objekt an den Anfang der Liste hinzuzufügen

    <div id="Wurzel">
        <button @click.once="add">Einen Lao Liu hinzufügen</button>
        <ul>
            <li v-for="(p, index) in Personen" :key="index">
                {{p.name}}---{{p.age}}
                <Eingabetyp="Text">
            </li>
        </ul>
    </div>
        var vm = neuer Vue({
            el:"#Wurzel",
            Daten:{
                Personen:
                    {id:"001", name:"张三", age:15},
                    {id:"002", Name:"Li Si", Alter:16},
                    {id:"003", Name:"王五", Alter:17}
                ]
            },
            Methoden: {
                hinzufügen(){
                    const p = {id:"004", name:"Kleinanzeigen", age:20}
                    diese.personen.unshift(p)
                }
            },
        })

Dies ist der gezeigte Effekt

Wenn wir den Namen in das Eingabefeld eintragen

Bildbeschreibung hier einfügen

Klicken Sie dann auf die Schaltfläche und beobachten Sie das Problem

Bildbeschreibung hier einfügen

Wir werden feststellen, dass „Lao Liu“ oben im Formular angezeigt wird, der Inhalt der Liste jedoch nicht mit dem Inhalt im Eingabefeld übereinstimmt.

Lösung: Wir key="index"改為:key="id"

Analyse des Schlüsselprinzips

Bildbeschreibung hier einfügen

Ausgangsdaten

Holen Sie sich die Anfangsdaten und generieren Sie einen virtuellen DOM basierend auf den Anfangsdaten. Konvertieren Sie den virtuellen DOM in einen realen DOM

Neue Daten

Holen Sie sich die neuen Daten (einschließlich Lao Liu) und generieren Sie basierend auf den Daten einen virtuellen DOM. Vergleichen Sie den virtuellen DOM mit dem virtuellen DOM der ursprünglichen Daten (die Textinformationen in li sind unterschiedlich, aber die Eingabe ist dieselbe. Der virtuelle DOM enthält keine Daten. Der auf der Seite eingegebene Inhalt wird im realen DOM gespeichert.) Textinformationen - die neuen Daten ersetzen die ursprünglichen Daten und der eingegebene Inhalt bleibt erhalten

Die Rolle des Schlüssels

Bildbeschreibung hier einfügen

Zusammenfassen

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:
  • Eine detaillierte Erklärung zum Listen-Rendering in Vue.js, die Sie kennen müssen
  • Detaillierte Erklärung, welche Rolle der Schlüssel bei der Vue-Listendarstellung spielt
  • Detaillierte Erklärung zum VueJS V-For-Listen-Rendering
  • Detaillierte Erläuterung der Vue.js-Lern-Tutorialliste
  • Detaillierte Erläuterung des ersten Einführungstutorials zu Vuejs (Einwegbindung, Zweiwegbindung, Listenrendering, Antwortfunktion)
  • Detaillierte Erklärung der Listendarstellung von Vue

<<:  Detaillierte Erklärung zur Verwendung des CSS-Zeigerereignisse-Attributs

>>:  W3C Tutorial (6): W3C CSS Aktivitäten

Artikel empfehlen

Eine kurze Einführung in Linux-Umgebungsvariablendateien

Im Linux-System können Umgebungsvariablen entspre...

XHTML: Rahmenstruktur-Tag

Rahmenstruktur-Tag <frameset></frameset&...

Detaillierte Erläuterung der Angular-Strukturdirektivenmodule und -Stile

Inhaltsverzeichnis 1. Strukturelle Anweisungen Mo...

So konfigurieren Sie Bash-Umgebungsvariablen in Linux

Shell ist ein in der Programmiersprache C geschri...

Was Sie über Responsive Design wissen müssen

Responsive Design bedeutet, während des Website-E...

Probleme beim Erstellen von Platzhaltern für HTML-Auswahlfelder

Ich verwende einen Platzhalter in einer Texteinga...

So installieren Sie Jenkins mit Docker

Inhaltsverzeichnis 1. Ziehen Sie das Bild 2. Erst...

Implementieren eines Tabellen-Scrollkarusselleffekts durch CSS-Animation

Eine Anwendung einer CSS-Animation mit demselben ...

js+canvas realisiert Code-Regeneffekt

In diesem Artikel wird der spezifische Code des j...

Implementierung der Docker-Bereitstellung des SQL Server 2019 Always On-Clusters

Inhaltsverzeichnis Docker-Bereitstellung Always o...