Warum den Lebenszyklus verstehen?
Was ist der Lebenszyklus?
Darüber hinaus ist die Vue-Instanz der Einstiegspunkt des Vue-Frameworks und kann als Front-End-ViewModel verstanden werden. Sie enthält die Geschäftslogikverarbeitung und das Datenmodell auf der Seite. Sie verfügt außerdem über eine eigene Reihe von Lebenszyklus-Funktions-Hooks, die uns dabei unterstützen, die JS-Kontrolle über den gesamten Prozess der Generierung, Kompilierung, Aufhängung und Zerstörung der Vue-Instanz durchzuführen. Lebenszyklus-Hook-Funktionen Der Lifecycle-Hook ist nur ein Alias für ein Lifecycle-Ereignis. Lifecycle-Hook = Lifecycle-Funktion = Lifecycle-Ereignis Die wichtigsten Funktionskategorien des Lebenszyklus sind:
erstellt und montiertUnter den Lebenszyklus-Hook-Funktionen werden wahrscheinlich die am häufigsten verwendeten erstellt und gemountet.
Tatsächlich sind die beiden relativ einfach zu verstehen. Normalerweise wird „create“ häufiger verwendet, während „mounted“ normalerweise bei der Verwendung einiger Plug-Ins oder Komponenten ausgeführt wird. Wenn Sie beispielsweise das Plug-In chart.js verwenden: var ctx = document.getElementById(ID); gibt es normalerweise diesen Schritt. Wenn Sie es in eine Komponente schreiben, werden Sie feststellen, dass Sie in „create“ keine Initialisierungskonfiguration für das Diagramm durchführen können. Sie müssen warten, bis das HTML gerendert ist, bevor Sie fortfahren können. In diesem Fall ist „mounted“ die einzige Wahl. Einige praktische Anwendungen von Hooks 1. Asynchrone FunktionenHier verwenden wir einen Timer, um asynchrone Funktionen auszuführen <div id="app"> <ul> <li v-for="(Element,Index) der Liste" key="index">{{Element}}</li> </ul> </div> <Skripttyp="text/javascript"> var app = new Vue({ el:'#app', Daten:{ Liste:['aaaaaaaa','bbbbbb','ccccccc'] }, erstellt:Funktion(){ consoloe.log('asynchron erstellt: aaaaa'); //Asynchrone Datenerfassung // Da es asynchron ist, ist es dasselbe wie unsere Ajax-Datenerfassung setTimeout(()=>{ diese.Liste=['111','222','333','444'], console.log('asynchron erstellt:', document.getElementsByTagName('li').length); },0) }, gemountet: Funktion () { console.log('mountet:',document.getElementsByTagName('li').Länge); }, aktualisiert: Funktion () { console.log('aktualisiert:',document.getElementsByTagName('li').Länge) }, }) </Skript> Das Ergebnis ist:
erklären: Sie können sehen, dass die Ausführungsreihenfolge der Funktion wie folgt lautet, weil die asynchrone Funktion zum erstellten Hook hinzugefügt wird: erstellter Hook, montierter Hook, asynchrone Funktion, aktualisierter Hook (gemäß dem Ereigniswarteschlangenprinzip wird li erst nach der Aktualisierung wirklich als 4 DOM gerendert, sodass die Anzahl der in der asynchronen Funktion erhaltenen li mit der Anzahl der nicht geänderten li übereinstimmt). Da „Mounted“ das DOM durch Festlegen des Anfangswerts in den Vue-Daten rendert und wir die Listendaten in der asynchronen Funktion ändern, beträgt die von „Mounted“ erhaltene Anzahl von „li“ 3. Die Aktualisierungsfunktion wird ausgelöst, solange sich die an den Datenwert gebundenen Daten ändern. Daher wird sie zuletzt ausgeführt, also 4 Bedeutet dies, dass wir direkt in der Update-Funktion arbeiten können? Eigentlich nicht wirklich, denn die Update-Funktion ist für alle Datenänderungen in Vue zuständig und wir können auch andere Datenänderungen haben. Beispielsweise das folgende Beispiel: // Wir verwenden die asynchrone Funktion, um die Liste zweimal zu ändern, und wir werden feststellen, dass die Aktualisierung zweimal ausgelöst wird. erstellt: function() { //Asynchrone Datenerfassung // Da es asynchron ist, ist es dasselbe wie unsere Ajax-Datenerfassung setTimeout(()=>{ diese.Liste=['111','222','333','444'], console.log('asynchron erstellt:', document.getElementsByTagName('li').length); },0) setzeTimeout(()=>{ this.list=['Happy Camp', 'Bodenständig', '300033', 'Täglicher Fortschritt', 'Lerne fleißig'], console.log('asynchron erstellt:', document.getElementsByTagName('li').length); },1000) }, gemountet: Funktion () { console.log('mountet:',document.getElementsByTagName('li').Länge); }, aktualisiert: Funktion () { console.log('aktualisiert:',document.getElementsByTagName('li').Länge) }, Das Ergebnis ist: 2. Vue.nextTick bearbeitet die Ergebnisse asynchroner FunktionenWenn wir die Daten ändern möchten, löst jeder seine eigene Methode aus erstellt:Funktion(){ //Asynchrone Datenerfassung // Da es asynchron ist, ist es dasselbe wie unsere Ajax-Datenerfassung // Um zu warten, bis Vue nach der Datenänderung die Aktualisierung des DOM abgeschlossen hat, können Sie Vue.nextTick(callback) unmittelbar nach der Datenänderung verwenden. Auf diese Weise wird die Rückruffunktion aufgerufen, nachdem die DOM-Aktualisierung abgeschlossen ist. setzeTimeout(()=>{ diese.Liste=['111','222','333','444'], console.log('asynchron erstellt:', document.getElementsByTagName('li').length); dies.$nextTick(Funktion(){ console.log("erstellt$nextTick:",document.getElementsByTagName('li').Länge) }); },0) setzeTimeout(()=>{ this.list=['Happy Camp', 'Bodenständig', '300033', 'Täglicher Fortschritt', 'Lerne fleißig'], console.log('asynchron erstellt:', document.getElementsByTagName('li').length); dies.$nextTick(Funktion(){ console.log("erstellt$nextTick:",document.getElementsByTagName('li').Länge) }); },1000) }, montiert: Funktion () { console.log('mountet:',document.getElementsByTagName('li').Länge); }, aktualisiert: Funktion () { console.log('aktualisiert:',document.getElementsByTagName('li').Länge) }, Das Ergebnis ist: Wir können sehen, dass wir durch $nextTick unsere eigenen Operationen auf den Ergebnissen asynchroner Funktionen durchführen können ZusammenfassenDieser 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:
|
<<: Analyse der Benutzererfahrung beim Design von Facebook-Dating-Websites
>>: Welche Arten von MySQL-Verbindungsabfragen kennen Sie?
Einführung: Im Vergleich zu herkömmlichen Bildver...
In diesem Artikel finden Sie das Installations- u...
Inhaltsverzeichnis MySQL gefilterte Replikation I...
Beim Aktualisieren eines Datensatzes in MySQL ist...
Inhaltsverzeichnis Vorherige 1. Was ist Setup-Syn...
Klicken Sie hier, um zum Abschnitt „HTML-Tutorial“...
Problembeschreibung In unseren Projekten sind hor...
Ich habe lange mit einem Problem gekämpft und das...
Wenn ein Projekt eine gewisse Komplexität erreich...
Vorwort Wir alle wissen, dass MySQL-Abfragen den ...
Auf dem Server läuft ein Taskprozess. Wenn wir ih...
Der Editor teilt Ihnen auch die entsprechenden Pr...
Mit dem Befehl „mysql explain“ wird gezeigt, wie ...
Beim Erstellen einer Webseite müssen wir normaler...
1: Unterschiede bei Geschwindigkeit und Lademethod...