Sprechen Sie über nextTick in Vue

Sprechen Sie über nextTick in Vue

Wenn sich die Daten ändern, wird die DOM-Ansicht nicht sofort aktualisiert. Wenn wir versuchen, einen Knoten oder seinen Wert unmittelbar nach der Änderung abzurufen, ist das Ergebnis wahrscheinlich undefiniert. Dies liegt daran, dass Vue Reaktionsfähigkeit nicht implementiert, weil sich das DOM unmittelbar nach der Datenänderung ändert, sondern weil es das DOM gemäß einer bestimmten Strategie aktualisiert.

Schauen wir uns eine kleine Demo an:

App.vue

<Vorlage>
  <div id="app">
        <div ref="message">{{msg}}</div>
        <div v-if="msg1">{{msg1}}</div>
        <button @click="changeMsg">Nachricht ändern</button>
  </div>
</Vorlage>

<Skript>
Standard exportieren {
  Name: "App",
  Daten(){
    zurückkehren {
      msg:"Hallo Vue",
      msg1: '',
    }
  },
  Methoden:{
    Nachricht ändern(){
      this.msg = 'Hallo Welt';
      dies.msg1=dies.$refs.message.innerHTML;
       console.log("Vor dem Aktualisieren des DOM: "+this.msg1)
    }
  }
}
</Skript>

<Stil>
#app {
  Schriftfamilie: „Avenir“, Helvetica, Arial, serifenlos;
  -webkit-font-smoothing: Kantenglättung;
  -moz-osx-font-smoothing: Graustufen;
  Textausrichtung: zentriert;
  Farbe: #2c3e50;
  Rand oben: 60px;
}
</Stil>

Durch Ausführen des Codes können wir sehen, dass der Wert von this.$refs.message.innerHTML immer noch den vorherigen Anfangswert speichert, wenn wir in der Methode this.$nextTick keine DOM-Operationen ausführen.

Ändern Sie den Code:

App.vue

<Vorlage>
  <div id="app">
        <div ref="message">{{msg}}</div>
        <div v-if="msg1">{{msg1}}</div>
        <button @click="changeMsg">Nachricht ändern</button>
  </div>
</Vorlage>

<Skript>
Standard exportieren {
  Name: "App",  
  Daten(){
    zurückkehren {
      msg:"Hallo Vue",
      msg1: '',
    }
  },
  Methoden:{
    Nachricht ändern(){
      this.msg = 'Hallo Welt';
      // dies.msg1=dies.$refs.message.innerHTML;
      // console.log("Vor dem Aktualisieren des DOM: "+this.msg1)
        dies.$nextTick(()=>{
          dies.msg1=dies.$refs.message.innerHTML;
          console.log("Nach dem Aktualisieren des DOM: "+this.msg1)
        })
    }
  }
}
</Skript>

<Stil>
#app {
  Schriftfamilie: „Avenir“, Helvetica, Arial, serifenlos;
  -webkit-font-smoothing: Kantenglättung;
  -moz-osx-font-smoothing: Graustufen;
  Textausrichtung: zentriert;
  Farbe: #2c3e50;
  Rand oben: 60px;
}
</Stil>

Nachdem wir den Code geändert haben, können wir feststellen, dass es einfach ist, den aktualisierten Wert mit this.$nextTick zu erhalten, genau wie auf der offiziellen Website erklärt: Der verzögerte Rückruf wird ausgeführt, nachdem der nächste DOM-Aktualisierungszyklus endet. Verwenden Sie diese Methode unmittelbar nach der Änderung der Daten, um das aktualisierte DOM zu erhalten.

Lassen Sie uns den Code ändern und vergleichen:

App.vue

<Vorlage>
  <div id="app">
        <div ref="message">{{msg}}</div>
        <div v-if="msg1">{{msg1}}</div>
        <button @click="changeMsg">Nachricht ändern</button>
  </div>
</Vorlage>

<Skript>
Standard exportieren {
  Name: "App",  
  Daten(){
    zurückkehren {
      msg:"Hallo Vue",
      msg1: '',
    }
  },
  Methoden:{
    Nachricht ändern(){
      this.msg = 'Hallo Welt';
      dies.msg1=dies.$refs.message.innerHTML;
       console.log("Vor dem Aktualisieren des DOM: "+this.msg1)
        dies.$nextTick(()=>{
          dies.msg1=dies.$refs.message.innerHTML;
          console.log("Nach dem Aktualisieren des DOM: "+this.msg1)
        })
    }
  }
}
</Skript>

<Stil>
#app {
  Schriftfamilie: „Avenir“, Helvetica, Arial, serifenlos;
  -webkit-font-smoothing: Kantenglättung;
  -moz-osx-font-smoothing: Graustufen;
  Textausrichtung: zentriert;
  Farbe: #2c3e50;
  Rand oben: 60px;
}
</Stil>

Nachdem wir den Code geändert haben, können wir nun leicht die Rolle von this.$nextTick(callback) erkennen. callback ist die Rückruffunktion, die wir zum Bedienen des DOM verwenden möchten.

Anwendungsszenarien:

  • Wenn Sie DOM-Operationen in der Lifecycle-Hook-Funktion „created()“ von Vue ausführen, achten Sie darauf, die DOM-Operationen in this.$nextTick(); einzufügen.
  • Denn wenn die Funktion „Create Hook“ ausgelöst wird, wird das DOM nicht gerendert. Wenn das DOM nicht gerendert wird, sind DOM-Operationen zweifellos sinnlos.
  • Wenn wir daher DOM-Operationen in „create“ ausführen, müssen wir die DOM-Operationen in this.$nextTick(); einfügen.
  • Das Gegenteil ist das Mounten, da beim Auslösen des Mountens das Mounten und Rendern des DOM abgeschlossen ist und daher bei der Durchführung von DOM-Operationen im Mounten kein Problem auftritt.

Da DOM-Updates asynchron sind, bestimmt beispielsweise die v-if-Direktive das Hinzufügen und Löschen von DOM-Elementen. Wenn wir in der Methode Variablen Werte zuweisen und this.$nextTick() nicht verwenden, erhalten wir wahrscheinlich den Anfangswert. Wenn wir den aktualisierten Wert erhalten möchten, müssen wir die Methode this.$nextTick() verwenden.

Oben finden Sie den detaillierten Inhalt von nextTick in Vue. Weitere Informationen zu Vue finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Analyse des Prinzips von Vue nextTick
  • Die Rolle von nextTick in Vue und mehrere einfache Anwendungsszenarien
  • Eine kurze Analyse von nextTick in vue
  • Eine umfassende Analyse von $nextTick in Vue
  • VUE aktualisiert DOM asynchron – Verwendung von $nextTick zum Lösen von DOM-Ansichtsproblemen
  • Vue.js-Prinzipanalyse: Detaillierte Erklärung der nextTick-Implementierung
  • Funktion und Verwendung von this.$nextTick in Vue
  • Detaillierte Erklärung der Verwendung von $nextTick und $forceUpdate in Vue
  • Detaillierte Untersuchung der Verwendung und Prinzipien von Vue nextTick
  • NextTick-Anwendungsbeispiel in Vue
  • Vue-Quellcode nextTick – Verwendung und Prinzipanalyse
  • Erfahren Sie in einem Artikel mehr über nextTick in Vue
  • Implementierung einer Browser-Ereignisschleife und von Vue NextTicket
  • Erklärung zur Verwendung von $nextTick in Vue
  • Verstehen Sie die Verwendung von nextTick in Vue anhand des Quellcodes
  • Vue2.0$nextTick wartet auf die Methode der Rückruffunktion, nachdem die Datenwiedergabe abgeschlossen ist
  • Detaillierte Erklärung der Unterschiede zwischen Vue-Direktiven und $nextTick bei der Manipulation von DOM
  • Tiefgreifendes Verständnis des Vue nextTick-Mechanismus

<<:  Analyse und Lösung des abnormalen Problems beim Laden von JAR in Tomcat

>>:  Installieren Sie den Quellcode der MySQL-Datenbank 5.6 unter Linux und ändern Sie das Anmeldebenutzerkennwort

Artikel empfehlen

Interner Ereignisrückruf der Webkomponentenkomponente und Problempunktanalyse

Inhaltsverzeichnis Vorne geschrieben Was genau is...

Detaillierte Erklärung des Linux-Netstat-Befehls

Inhaltsverzeichnis Linux-Netstat-Befehl 1. Detail...

Zusammenfassung der grundlegenden Verwendung von CSS3 @media

//Grammatik: @media Medientyp und | nicht | nur (...

Methode zum Knacken der Registrierung der FlashFXP-FTP-Clientsoftware

Die Downloadadresse von FlashFXP lautet: https://...

So fügen Sie Tastenkombinationen in Xshell hinzu

Als nützlicher Terminalemulator wird Xshell häufi...

Vor- und Nachteile von React Hooks

Inhaltsverzeichnis Vorwort Vorteil: Mangel: 1. Re...

Die Verwendung von Textbereichen in HTML und häufige Probleme und Fallanalyse

Der Textarea-Tag ist ein HTML-Tag, den wir häufig ...

So verwenden Sie CocosCreator zum Erstellen eines Schießspiels

Analysieren Sie die Produktionsschritte: 1. Resso...

Einige Details zu Semikolons in JavaScript

Vorwort Semikolons sind in JavaScript optional un...

Tools zur Bildoptimierung für Webseiten und Tipps zur Verwendung

Als grundlegendes Element einer Webseite sind Bil...

js realisiert Warenkorb-Add- und Subtraktions- sowie Preisberechnungsfunktionen

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