Mengapakah Anak Panah Berfungsi dalam Sifat Pengiraan Vue Kadangkala Menyebabkan Gelagat Tidak Dijangka?

Patricia Arquette
Lepaskan: 2024-11-24 06:21:14
asal
688 orang telah melayarinya

Why Do Arrow Functions in Vue Computed Properties Sometimes Cause Unexpected Behavior?

Menggunakan Fungsi Anak Panah dalam Sifat Pengiraan Vue: Memahami Perangkap

Dalam Vue.js, fungsi anak panah boleh digunakan untuk memudahkan sintaks sifat yang dikira. Walau bagaimanapun, menggunakan fungsi anak panah dalam sifat yang dikira boleh membawa kepada tingkah laku yang tidak dijangka jika tidak digunakan dengan betul.

Takrifan Fungsi yang Salah

Pertimbangkan coretan kod Vue berikut:

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

Apabila menggunakan fungsi anak panah dalam sifat yang dikira, adalah penting untuk menyedari tingkah laku skop mereka. Fungsi anak panah tidak mengikat kata kunci ini pada contoh Vue. Sebaliknya, mereka mewarisi pengikatan ini daripada konteks sekeliling, yang dalam kes ini ialah skop global komponen Vue.

Akibat Takrifan Salah

Akibatnya daripada takrif fungsi yang salah, kata kunci ini dalam sifat yang dikira tidak merujuk kepada contoh Vue, sebaliknya kepada Vue.js global contoh. Ini membawa kepada ralat rujukan yang tidak ditentukan untuk sifat turnRed, turnGreen dan turnBlue. Akibatnya, sifat yang dikira akan mengembalikan objek kosong dan tingkah laku perubahan warna tidak akan berfungsi seperti yang diharapkan.

Definisi Fungsi Betul

Untuk menyelesaikan isu ini, kita perlu untuk mengikat konteks ini secara eksplisit kepada contoh Vue. Untuk melakukan ini, kami boleh menggunakan sintaks fungsi tradisional:

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

Dengan menggunakan sintaks fungsi tradisional, kami memastikan bahawa kata kunci ini dalam sifat yang dikira merujuk kepada tika Vue. Ini membenarkan sifat yang dikira untuk mengakses dan memanipulasi data tika Vue seperti yang dimaksudkan.

Nota Penting

Adalah penting untuk mematuhi panduan dokumentasi Vue.js apabila menggunakan anak panah fungsi. Menurut dokumentasi, "Jangan gunakan fungsi anak panah pada sifat contoh atau panggil balik (cth. vm.$watch('a', newVal => this.myMethod())). Oleh kerana fungsi anak panah terikat pada konteks induk , ini bukan contoh Vue seperti yang anda jangkakan dan this.myMethod akan tidak ditentukan."

Atas ialah kandungan terperinci Mengapakah Anak Panah Berfungsi dalam Sifat Pengiraan Vue Kadangkala Menyebabkan Gelagat Tidak Dijangka?. 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