Rumah >hujung hadapan web >tutorial js >Mengapakah Anak Panah Berfungsi dalam Sifat Pengiraan Vue Kadangkala Menyebabkan Gelagat Tidak Dijangka?

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

Patricia Arquette
Patricia Arquetteasal
2024-11-24 06:21:14716semak imbas

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

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

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!

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