Rumah > hujung hadapan web > tutorial js > Mengapa Fungsi Anak Panah Memecahkan Sifat Pengiraan Vue, dan Bagaimana Saya Boleh Membaikinya?

Mengapa Fungsi Anak Panah Memecahkan Sifat Pengiraan Vue, dan Bagaimana Saya Boleh Membaikinya?

Barbara Streisand
Lepaskan: 2024-11-26 03:33:18
asal
429 orang telah melayarinya

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

Gunakan Fungsi Anak Panah dalam Sifat Pengiraan Vue: Menyelesaikan masalah

Dalam Vue, sifat yang dikira digunakan untuk memperoleh nilai reaktif daripada sifat lain. Walaupun fungsi anak panah boleh memudahkan kod dalam banyak senario, ia boleh menjadi masalah apabila digunakan dalam sifat yang dikira.

Kod Asal (Berfungsi):

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 };
    }
  }
});
Salin selepas log masuk

Kod Ubahsuai (Tidak Berfungsi):

Namun, apabila anda ubah suai kaedah dalam sifat yang dikira menggunakan fungsi anak panah, tingkah laku berubah:

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

Penjelasan:

Punca isu ini ialah fungsi anak panah tidak mengikat ini kepada contoh Vue. Sebaliknya, mereka mewarisi konteks skop induk. Dalam kes ini, skop induk ialah skop global, jadi ini merujuk kepada objek tetingkap, bukannya contoh Vue yang dijangkakan. Akibatnya, nilai turnRed, turnGreen dan turnBlue kekal tidak dimulakan, membawa kepada warna yang tidak berubah.

Penyelesaian:

Untuk menyelesaikan isu ini dan menjadikan fungsi anak panah berfungsi dalam sifat yang dikira , Vue mengesyorkan menggunakan kaedah bind untuk mengikat ini secara eksplisit pada Vue contoh:

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

Atas ialah kandungan terperinci Mengapa Fungsi Anak Panah Memecahkan Sifat Pengiraan Vue, dan Bagaimana Saya Boleh Membaikinya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan