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
Linda HamiltonOriginal
2024-11-15 22:14:03964Durchsuche

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
},

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; 
  } 
},

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);
},
mounted() {
  console.log(this);
}

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!

Stellungnahme:
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