Sie sollten nie einen Pfeil Funktion verwenden, um ein Verfahren mit Vue, weil mit Pfeil Funktionen zu definieren, this
ist defined lexically.
Eine Pfeilfunktion erstellt keine eigenen Dies wird der Wert umschließenden Ausführungskontext verwendet.
Das bedeutet, dass mit Vue-Methoden this
auf das globale Objekt oder das Fenster zeigt.
Wenn ein Vue instanziiert wird, bindet Vue die in methods
definierten Methoden an das Vue-Objekt. Eine Pfeilfunktion kann nicht gebunden werden. Es ist this
wird immer das sein, was es ursprünglich war.
Das ist der Fall, sollten Sie immer eine normale Funktion verwenden, um eine Vue-Methode zu schreiben.
Dies gilt auch für die Datenfunktion, berechnete Werte und Lebenszyklus-Hooks. Die einzige Zeit, die Sie normalerweise eine Pfeilfunktion verwenden, ist, wenn Sie eine Funktion innerhalb einer Ihrer Methoden oder berechneten Werte definieren, wie Sie möglicherweise beim Definieren eines Rückrufs für einen AJAX-Aufruf.
Siehe VueJS: why is “this” undefined?.
Hinweis: Es gibt ein Ausnahme nie eine Vue Methode einen Pfeil Funktion zu definieren, verwenden und das wäre, wenn Sie überhaupt nicht in dem Verfahren this
verwiesen. Diese Fälle sind äußerst selten. Sie müssen fast immer auf andere Teile des Vue innerhalb einer Methode mit this
verweisen. In diesem Fall sollte es schnell zur Gewohnheit werden, einfach keine Vue-Methode mit einer Pfeilfunktion zu definieren.
So viele fallen in diese Falle denken alles ES6 ist besser. Dasselbe gilt für jQuery Event-Handler und in Reacts createClass, wenn Sie Pfeilfunktionen verwenden, kennen Sie die Implikationen! – Li357
@AndrewLi Einverstanden. Es ist einer der häufigsten Fehler, die ich sehe. – Bert
@AndrewLi ist das wirklich die Lösung? Mein Eslint geht Beserk. In jQuery oder React würden Sie die Bindefunktion verwenden. Aus MDN web docs: Die bind() -Methode erstellt eine neue Funktion, deren this-Schlüsselwort beim Aufruf auf den angegebenen Wert gesetzt wird. Dabei wird eine bestimmte Argumentfolge angegeben, wenn die neue Funktion aufgerufen wird. – sampoh