Heim Web-Frontend View.js Umfassende Analyse von nextTick in vue

Umfassende Analyse von nextTick in vue

Nov 10, 2020 pm 06:01 PM
nexttick vue

Die folgende Spalte „Vue.js-Tutorial“ stellt Ihnen nextTick in Vue vor. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.

Umfassende Analyse von nextTick in vuevue ist ein sehr beliebtes Framework, das die Vorteile von Angular und React kombiniert, um ein leichtes und benutzerfreundliches MVVM-Framework mit bidirektionalen Datenbindungsfunktionen zu bilden. Ich benutze es lieber. Wenn wir Vue verwenden, verwenden wir häufig diese Methode. Ich glaube, Sie haben sie auch verwendet. Ein häufiges Szenario, das ich verwende, ist, dass ich nach dem Abrufen von Daten, wenn ich den nächsten Schritt oder andere Vorgänge für die neue Ansicht ausführen muss, feststelle, dass das DOM nicht abgerufen werden kann. Da der Zuweisungsvorgang nur die Änderung des Datenmodells abschließt und nicht die Ansichtsaktualisierung abschließt. Zu diesem Zeitpunkt müssen wir die in diesem Kapitel vorgestellten Funktionen verwenden.

Warum nextTick verwenden? Bitte sehen Sie sich den folgenden Code an und ändert seine Farbe in Rot, aber tatsächlich wird ein Fehler gemeldet. Bei der Ausführung dieses Satzes gibt es kein li unter ul, was bedeutet, dass der gerade ausgeführte Zuweisungsvorgang derzeit nicht dazu führt, dass die Ansichtsebene aktualisiert wird.

In diesem Fall stellt uns vue die Methode $nextTick zur Verfügung. Wenn wir in Zukunft mit der aktualisierten Ansicht arbeiten möchten, müssen wir nur die auszuführende Funktion an diese Methode übergeben. $nextTick, und vue wird dies tun Erledigen Sie die Arbeit für uns.

Interpretation des Quellcodes

Diese Funktion ist sehr einfach, beginnend mit Zeile 450 der Version vue2.2.6.

Verwendet diese Funktion zunächst einen einfachen Zinsmodus oder handelt es sich um eine Abschlussfunktion?

new Vue({
  el: '#app',
  data: {
    list: []
  },
  mounted: function () {
    this.get()
  },
  methods: {
    get: function () {
      this.$http.get('/api/article').then(function (res) {
        this.list = res.data.data.list
        // ref  list 引用了ul元素,我想把第一个li颜色变为红色
        this.$refs.list.getElementsByTagName('li')[0].style.color = 'red'
      })
    },
  }
})
Nach dem Login kopieren
Definiert zunächst einige Variablen für die spätere Verwendung.
var callbacks = [];   // 缓存函数的数组
var pending = false;  // 是否正在执行
var timerFunc;  // 保存着要执行的函数
Nach dem Login kopieren

Diese Funktion ist die tatsächlich in $ aufgerufene Funktion nextTick .

Als nächstes unterteilt Vue drei Situationen, um den Aufruf der oben genannten Funktion zu verzögern, da der Zweck von $nextTick darin besteht, die eingehende Funktion zu verzögern, bis der Dom aktualisiert wird, bevor er verwendet wird. Daher verwenden wir hier die js-Methode in eleganter absteigender Reihenfolge Punkt.

1. Verzögerter Aufruf von Promise.then

function nextTickHandler () {
  pending = false;
  //  拷贝出函数数组副本
  var copies = callbacks.slice(0);
  //  把函数数组清空
  callbacks.length = 0;
  // 依次执行函数
  for (var i = 0; i < copies.length; i++) {
    copies[i]();
  }
}
Nach dem Login kopieren

Wenn der Browser Promise unterstützt, verwenden Sie Promise.then, um den Funktionsaufruf zu verzögern , auch Das heißt, die Funktion wird zuletzt im Funktionsaufrufstapel aufgerufen. dadurch erreichen verzögerung.

2. MutationObserver überwacht Änderungen

if (typeof Promise !== &#39;undefined&#39; && isNative(Promise)) {
  var p = Promise.resolve();
  var logError = function (err) { console.error(err); };
  timerFunc = function () {
    p.then(nextTickHandler).catch(logError);
    if (isIOS) { setTimeout(noop); }
  };
}
Nach dem Login kopieren

MutationObserver ist eine neue Funktion, die in h5 hinzugefügt wurde. Ihre Funktion besteht darin, Änderungen in Dom-Knoten zu überwachen und die Rückruffunktion auszuführen, nachdem alle Dom-Änderungen abgeschlossen sind.

Es gibt mehrere Änderungen, die speziell überwacht werden müssen.

childList: Änderungen in untergeordneten Elementen.

Attributes: Änderungen in Attributen.
  • characterData: Änderungen im Knoteninhalt oder Knotentext in Knoten (einschließlich untergeordneter Knoten und untergeordneter Knoten von untergeordneten Knoten)
  • Es ist ersichtlich, dass der obige Code einen Textknoten erstellt, um den Inhalt des Textknotens zu ändern und Änderungen auszulösen, da wir nach der Aktualisierung des Datenmodells wird dazu führen, dass der Dom-Knoten neu gerendert wird.
  • Also haben wir einen solchen Änderungs-Listener hinzugefügt, der den Listener mit einer Änderung in einem Textknoten auslöst, und nachdem der gesamte Dom gerendert wurde, führen wir die Funktion aus, um unseren Verzögerungseffekt zu erzielen. 3. SetTimeout-Verzögerer Die Funktion wird ausgeführt. Damit ist die Verzögerungsfunktion abgeschlossen.

  • Abschlussfunktion

  • else if (typeof MutationObserver !== &#39;undefined&#39; && (
      isNative(MutationObserver) ||
      MutationObserver.toString() === &#39;[object MutationObserverConstructor]&#39;
    )) {
    
      var counter = 1;
      var observer = new MutationObserver(nextTickHandler);
      var textNode = document.createTextNode(String(counter));
      observer.observe(textNode, {
        characterData: true
      });
      timerFunc = function () {
        counter = (counter + 1) % 2;
        textNode.data = String(counter);
      };
    }
    Nach dem Login kopieren
Diese Rückgabefunktion ist die Abschlussfunktion, die wir tatsächlich verwenden. Jedes Mal, wenn wir eine Funktion hinzufügen, legen wir das Callback-Funktionsarray auf den Stapel. Überwachen Sie dann, ob sie gerade ausgeführt wird, und führen Sie die Funktion andernfalls aus. Das ist leicht zu verstehen. Das nächste ist Versprechen.

else {
    timerFunc = function () {
      setTimeout(nextTickHandler, 0);
    };
  }
Nach dem Login kopieren

Die zweite Art, den obigen Code zu schreiben, ist bei uns nicht üblich. Sie ruft die Funktion $nextTick direkt auf und schreibt den Code dann im Promise-Format, was jedoch nicht von Vue verarbeitet werden kann es intern. 🔜

Weitere Kenntnisse zum Thema Programmierung finden Sie unter: Programmierkurse! !

Das obige ist der detaillierte Inhalt vonUmfassende Analyse von nextTick in vue. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So fügen Sie Funktionen zu Schaltflächen für Vue hinzu So fügen Sie Funktionen zu Schaltflächen für Vue hinzu Apr 08, 2025 am 08:51 AM

Sie können der VUE -Taste eine Funktion hinzufügen, indem Sie die Taste in der HTML -Vorlage an eine Methode binden. Definieren Sie die Methode und schreiben Sie die Funktionslogik in der VUE -Instanz.

So verwenden Sie Bootstrap in Vue So verwenden Sie Bootstrap in Vue Apr 07, 2025 pm 11:33 PM

Die Verwendung von Bootstrap in Vue.js ist in fünf Schritte unterteilt: Startstrap installieren. Bootstrap in main.js. Verwenden Sie die Bootstrap -Komponente direkt in der Vorlage. Optional: benutzerdefinierter Stil. Optional: Verwenden Sie Plug-Ins.

So verweisen Sie auf die JS -Datei mit Vue.js So verweisen Sie auf die JS -Datei mit Vue.js Apr 07, 2025 pm 11:27 PM

Es gibt drei Möglichkeiten, sich auf JS -Dateien in Vue.js zu beziehen: Geben Sie den Pfad direkt mit dem & lt; Skript & gt an. Etikett;; Dynamischer Import mit dem montierten () Lebenszyklushaken; und importieren über die Vuex State Management Library.

So verwenden Sie Watch in Vue So verwenden Sie Watch in Vue Apr 07, 2025 pm 11:36 PM

Mit der Watch -Option in Vue.js können Entwickler auf Änderungen in bestimmten Daten anhören. Wenn sich die Daten ändert, löst sich eine Rückruffunktion aus, um Aktualisierungsansichten oder andere Aufgaben auszuführen. Zu den Konfigurationsoptionen gehören unmittelbar, die festlegen, ob ein Rückruf sofort ausgeführt werden soll, und Deep, das feststellt, ob Änderungen an Objekten oder Arrays rekursiv anhören sollen.

So kehren Sie von Vue zur vorherigen Seite zurück So kehren Sie von Vue zur vorherigen Seite zurück Apr 07, 2025 pm 11:30 PM

VUE.JS hat vier Methoden, um zur vorherigen Seite zurückzukehren: $ router.go (-1) $ router.back () verwendet & lt; Router-Link to = & quot;/& quot; Komponentenfenster.history.back () und die Methodenauswahl hängt von der Szene ab.

Vue realisiert Festzelt-/Text -Scrolling -Effekt Vue realisiert Festzelt-/Text -Scrolling -Effekt Apr 07, 2025 pm 10:51 PM

Implementieren Sie Marquee/Text-Scrolling-Effekte in VUE unter Verwendung von CSS-Animationen oder Bibliotheken von Drittanbietern. In diesem Artikel wird die Verwendung von CSS -Animation vorgestellt: Bildlauftext erstellen und Text mit & lt; div & gt;. Definieren Sie CSS -Animationen und setzen Sie Überlauf: Versteckt, Breite und Animation. Definieren Sie Keyframes, setzen Sie Transformation: Translatex () am Anfang und am Ende der Animation. Passen Sie die Animationseigenschaften wie Dauer, Bildlaufgeschwindigkeit und Richtung an.

Wie man Vue Pagination verwendet Wie man Vue Pagination verwendet Apr 08, 2025 am 06:45 AM

Pagination ist eine Technologie, die große Datensätze in kleine Seiten aufteilt, um die Leistung und die Benutzererfahrung zu verbessern. In VUE können Sie die folgende integrierte Methode zum Paging verwenden: Berechnen Sie die Gesamtzahl der Seiten: TotalPages () TRAVERSAL-Seitennummer: V-für Anweisung, um die aktuelle Seite festzulegen: aktuelle Seite

So verwenden Sie Funktionsabfangweserven So verwenden Sie Funktionsabfangweserven Apr 08, 2025 am 06:51 AM

Funktionsabfangen in VUE ist eine Technik, mit der die Häufigkeit, mit der eine Funktion eingerufen wird, innerhalb eines bestimmten Zeitraums aufgerufen wird und Leistungsprobleme verhindern. Die Implementierungsmethode lautet: Importieren Sie die Lodash -Bibliothek: importieren {dunounce} aus 'lodash'; Verwenden Sie die Dabounce -Funktion, um eine Intercept -Funktion zu erstellen: const dabouncedFunction = dunounce (() = & gt; { / logical /}, 500); Rufen Sie die Abfangfunktion auf und die Steuerfunktion wird höchstens einmal in 500 Millisekunden aufgerufen.

See all articles