Heim > Web-Frontend > js-Tutorial > Warum ist „dies' in den Pfeilfunktionen von Vue.js undefiniert?

Warum ist „dies' in den Pfeilfunktionen von Vue.js undefiniert?

Linda Hamilton
Freigeben: 2024-11-15 22:14:03
Original
949 Leute haben es durchsucht

Why is

VueJS: Lösung des „diesen“ undefinierten Problems

Pfeilfunktionen können in VueJS eine Falle sein und zu unerwarteten undefinierten Werten führen. Dies liegt daran, dass Pfeilfunktionen den Kontext ihres übergeordneten Elements erben und nicht an die Vue-Instanz gebunden sind.

Lebenszyklus-Hooks

Bei Verwendung von Pfeilfunktionen in Lebenszyklus-Hooks wie „mounted“ Dies bezieht sich nicht auf die Vue-Instanz. Stattdessen bezieht es sich auf den übergeordneten Kontext, bei dem es sich normalerweise um ein HTML-Element oder die Vue-Komponente handelt, die den gemounteten Hook ausgelöst hat.

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

Berechnete Eigenschaften

Pfeilfunktionen in berechneten Eigenschaften führen ebenfalls zu undefinierten Werten. Da sie den übergeordneten Kontext erben, bezieht sich dies nicht auf die Vue-Instanz.

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

Dies führt zu dem Fehler „Uncaught TypeError: Cannot read property 'bar' of undefined“.

Lösung

Um dieses Problem zu beheben, verwenden Sie reguläre Funktionen oder ECMAScript 5-Funktionskürzel anstelle von Pfeilen Funktionen:

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

Durch die Verwendung dieser Methoden können Sie sicherstellen, dass sich dies immer auf die Vue-Instanz bezieht und das erwartete Verhalten in Lebenszyklus-Hooks und berechneten Eigenschaften bereitstellt.

Das obige ist der detaillierte Inhalt vonWarum ist „dies' in den Pfeilfunktionen von Vue.js 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