Heim > Web-Frontend > js-Tutorial > Warum ist „dies' in Vue.js-Komponenten und berechneten Eigenschaften mithilfe von Pfeilfunktionen undefiniert?

Warum ist „dies' in Vue.js-Komponenten und berechneten Eigenschaften mithilfe von Pfeilfunktionen undefiniert?

Patricia Arquette
Freigeben: 2024-11-18 12:05:02
Original
849 Leute haben es durchsucht

Why is

Warum ist der Verweis auf „dieses“ in Vue.js-Komponenten und berechneten Eigenschaften undefiniert?

In Vue.js werden Komponenten definiert und Die Verwendung berechneter Eigenschaften erfordert die Arbeit mit dem Schlüsselwort „this“. Entwickler stoßen jedoch häufig auf das Problem, dass „dies“ in bestimmten Szenarien als „undefiniert“ ausgewertet wird. Dieser Artikel soll klären, warum dies auftritt, und Lösungen bereitstellen.

Bei der Verwendung von Pfeilfunktionen (z. B. () => {}) in Lebenszyklus-Hooks (z. B. „mounted“ und „update“) oder berechneten Eigenschaften wird der Wert von „this“ kann von der beabsichtigten Vue-Instanz abweichen. In der Vue.js-Dokumentation wird ausdrücklich von der Verwendung von Pfeilfunktionen in solchen Kontexten abgeraten. Stattdessen sollten Entwickler reguläre Funktionen oder die Kurzschriftsyntax von ECMAScript 5 verwenden, um sicherzustellen, dass „dies“ die Vue-Instanz ordnungsgemäß referenziert.

Betrachten Sie das Beispiel einer Komponente:

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

In diesem Fall die Pfeilfunktion () => {} bindet „this“ an einen anderen Kontext außerhalb der Vue-Komponente. Folglich schlägt der Zugriff auf Eigenschaften oder Methoden mit „this“ außerhalb der Funktion fehl.

Ähnlich gilt bei einer berechneten Eigenschaft:

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

Die Wertauswertung der berechneten Eigenschaft mithilfe der Pfeilfunktion () = > {} führt auch dazu, dass „this“ undefiniert ist. Dies führt zu dem Fehler „Eigenschaft ‚Leiste‘ von undefiniert kann nicht gelesen werden.“

Um dieses Problem zu beheben, können reguläre JavaScript-Funktionen oder die Abkürzung ECMAScript 5 verwendet werden:

mounted: function () {
  console.log(this); // correctly logs the Vue instance
}
Nach dem Login kopieren
mounted() {
  console.log(this); // also correctly logs the Vue instance
}
Nach dem Login kopieren

Diese Beispiele zeigen, wie reguläre Funktionen oder ECMAScript 5-Kurzschrift „this“ entsprechend an die Vue-Komponenteninstanz binden und so das Problem lösen, bei dem „this“ als „undefiniert“ ausgewertet wird.

Das obige ist der detaillierte Inhalt vonWarum ist „dies' in Vue.js-Komponenten und berechneten Eigenschaften mithilfe von Pfeilfunktionen 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage