Heim  >  Artikel  >  Web-Frontend  >  Warum beschädigen Pfeilfunktionen die von Vue berechneten Eigenschaften und wie kann ich sie beheben?

Warum beschädigen Pfeilfunktionen die von Vue berechneten Eigenschaften und wie kann ich sie beheben?

Barbara Streisand
Barbara StreisandOriginal
2024-11-26 03:33:18401Durchsuche

Why Do Arrow Functions Break Vue Computed Properties, and How Can I Fix Them?

Verwenden Sie Pfeilfunktionen in berechneten Eigenschaften von Vue: Fehlerbehebung

In Vue werden berechnete Eigenschaften verwendet, um reaktive Werte aus anderen Eigenschaften abzuleiten. Während Pfeilfunktionen den Code in vielen Szenarien vereinfachen können, können sie bei der Verwendung in berechneten Eigenschaften problematisch sein.

Originalcode (funktioniert):

new Vue({
  el: '#app',
  data: {
    turnRed: false,
    turnGreen: false,
    turnBlue: false
  },
  computed: {
    switchRed: function () {
      return { red: this.turnRed };
    },
    switchGreen: function () {
      return { green: this.turnGreen };
    },
    switchBlue: function () {
      return { blue: this.turnBlue };
    }
  }
});

Geänderter Code (funktioniert nicht):

Wenn Sie jedoch die Methoden in berechneten Eigenschaften mithilfe von Pfeilfunktionen ändern, ändert sich das Verhalten Änderungen:

computed: {
  switchRed: () => {
    return { red: this.turnRed };
  },
  switchGreen: () => {
    return { green: this.turnGreen };
  },
  switchBlue: () => {
    return { blue: this.turnBlue };
  }
}

Erklärung:

Die Hauptursache für dieses Problem ist, dass Pfeilfunktionen dies nicht an die Vue-Instanz binden. Stattdessen erben sie den Kontext des übergeordneten Bereichs. In diesem Fall ist der übergeordnete Bereich der globale Bereich, sodass er sich auf das Fensterobjekt und nicht auf die erwartete Vue-Instanz bezieht. Folglich bleiben die Werte turnRed, turnGreen und turnBlue nicht initialisiert, was zu unveränderten Farben führt.

Lösung:

So beheben Sie dieses Problem und sorgen dafür, dass Pfeilfunktionen in berechneten Eigenschaften funktionieren , Vue empfiehlt die Verwendung der Bind-Methode, um dies explizit an die Vue-Instanz zu binden:

computed: {
  switchRed: () => {
    return { red: this.turnRed };
  }.bind(this),
  switchGreen: () => {
    return { green: this.turnGreen };
  }.bind(this),
  switchBlue: () => {
    return { blue: this.turnBlue };
  }.bind(this)
}

Das obige ist der detaillierte Inhalt vonWarum beschädigen Pfeilfunktionen die von Vue berechneten Eigenschaften und wie kann ich sie beheben?. 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