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?
Theoretisch entspricht der von MySQL verwendete S...
1. Erstellen Sie eine neue virtuelle Maschine aus...
Nichtorthogonale Ränder Wenn ein Rand verwendet w...
Inhaltsverzeichnis 01 Einführung in GTID 02 Wie G...
Installieren Sie schnell die Tensorflow-Umgebung ...
tcpdump ist ein flexibles und leistungsstarkes To...
Inhaltsverzeichnis 1. Ziehen Sie das Bild 2. Ausf...
Nginx (Engine x) ist ein leistungsstarker HTTP- u...
Mit dem MySQL-Befehl „explain“ können Sie die Lei...
Vom Kunsthandwerksdesign über Grafikdesign bis hin...
Vorwort: Beim Entwerfen einer Tabelle in MySQL em...
1. Hintergrundausführung Im Allgemeinen werden Pr...
Beim Entwickeln von Anwendungen, die eine Datenba...
1. Einleitung Vorher haben wir über das Front-End...
Dieser Artikel veranschaulicht anhand von Beispie...