Heim > Web-Frontend > js-Tutorial > Warum wird „dies' in Vue.js Lebenszyklus-Hooks und berechneten Eigenschaften undefiniert?

Warum wird „dies' in Vue.js Lebenszyklus-Hooks und berechneten Eigenschaften undefiniert?

DDD
Freigeben: 2024-11-28 04:58:10
Original
769 Leute haben es durchsucht

Why Does

VueJS: „this“ undefiniert in Lifecycle-Hooks und berechneten Eigenschaften

In Vue.js kann es vorkommen, dass Sie auf Situationen stoßen, in denen der Zugriff auf „this“ erfolgt Das Schlüsselwort „ innerhalb von Lebenszyklus-Hooks oder berechneten Eigenschaften gibt „undefiniert“ zurück. Dies tritt auf, wenn Pfeilfunktionen verwendet werden.

Ursache:

Pfeilfunktionen () => {} Binden Sie das Schlüsselwort „this“ an den Kontext außerhalb der Vue-Instanz. Das bedeutet, dass sich „dies“ innerhalb einer Pfeilfunktion auf den übergeordneten Bereich bezieht, nicht auf die Vue-Instanz selbst.

Beispiel 1:

mounted: () => {
  console.log(this); // logs "undefined"
}
Nach dem Login kopieren

In diesem Beispiel Die für den Hook „mounted“ verwendete Pfeilfunktion bindet „this“ nicht an die Vue-Instanz.

Beispiel 2:

computed: {
  foo: () => { 
    return this.bar + 1; 
  }
}
Nach dem Login kopieren

Hier verwendet die berechnete Eigenschaft eine Pfeilfunktion, die dazu führt, dass der Verweis auf „this.bar“ als undefiniert ausgewertet wird, was zu dem Fehler „Eigenschaft ‚bar‘ kann nicht gelesen werden“ führt. von undefiniert.“

Lösung:

Um dieses Problem zu beheben und auf den richtigen Verweis auf „dies“ zuzugreifen, verwenden Sie reguläre Funktionen oder die ES5-Kurzschrift:

Reguläre Funktion:

mounted: function () {
  console.log(this);
}
Nach dem Login kopieren

ES5-Kurzschrift:

mounted() {
  console.log(this);
}
Nach dem Login kopieren

By Mit diesen Ansätzen stellen Sie sicher, dass sich „dies“ innerhalb von Lebenszyklus-Hooks und berechneten Eigenschaften auf die Vue-Instanz bezieht.

Das obige ist der detaillierte Inhalt vonWarum wird „dies' in Vue.js Lebenszyklus-Hooks und berechneten Eigenschaften undefiniert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage