Rumah > hujung hadapan web > tutorial js > Mengapakah \'ini\' Tidak Ditakrifkan dalam Fungsi Anak Panah Vue.js?

Mengapakah \'ini\' Tidak Ditakrifkan dalam Fungsi Anak Panah Vue.js?

Linda Hamilton
Lepaskan: 2024-11-15 22:14:03
asal
964 orang telah melayarinya

Why is

VueJS: Menyelesaikan Isu Tidak Ditakrifkan "ini"

Fungsi anak panah boleh menjadi perangkap dalam VueJS, yang membawa kepada nilai yang tidak ditakrifkan yang tidak dijangka. Ini kerana fungsi anak panah mewarisi konteks induknya, dan bukannya mengikat pada tika Vue.

Cangkuk Kitar Hayat

Apabila menggunakan fungsi anak panah dalam cangkuk kitar hayat seperti dipasang, ini tidak merujuk kepada contoh Vue. Sebaliknya, ia merujuk kepada konteks induk, yang biasanya merupakan elemen HTML atau komponen Vue yang mencetuskan cangkuk yang dipasang.

mounted: () => {
  console.log(this); // undefined
},
Salin selepas log masuk

Sifat Berkomputer

Fungsi anak panah dalam sifat yang dikira juga membawa kepada nilai yang tidak ditentukan. Memandangkan mereka mewarisi konteks induk, ini tidak merujuk kepada tika Vue.

computed: {
  foo: () => { 
    return this.bar + 1; 
  } 
},
Salin selepas log masuk

Ini mengakibatkan ralat "Uncaught TypeError: Cannot read property 'bar' of undefined".

Penyelesaian

Untuk menyelesaikannya, gunakan fungsi biasa atau pintasan fungsi ECMAScript 5 dan bukannya fungsi anak panah:

mounted: function () {
  console.log(this);
},
Salin selepas log masuk
mounted() {
  console.log(this);
}
Salin selepas log masuk

Dengan menggunakan kaedah ini, anda boleh memastikan bahawa ini sentiasa merujuk kepada tika Vue, memberikan gelagat yang dijangkakan dalam cangkuk kitaran hayat dan sifat yang dikira.

Atas ialah kandungan terperinci Mengapakah \'ini\' Tidak Ditakrifkan dalam Fungsi Anak Panah Vue.js?. 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