Props dalam Vue boleh menghantar fungsi; rentetan, tatasusunan, nombor dan objek boleh dihantar sebagai prop dalam Vue terutamanya digunakan untuk menghantar nilai dalam komponen bahagian luar. Sintaks ialah " export default {methods: {myFunction() {// ...}}};".
Persekitaran pengendalian tutorial ini: sistem Windows 10, versi Vue3, komputer Dell G3.
Soalan biasa yang sering ditanya oleh pemula dalam Vue. Rentetan, tatasusunan, nombor dan objek boleh dihantar sebagai props
. Tetapi bolehkah anda menghantar fungsi sebagai props
? Sebaliknya, Vue mempunyai ciri yang direka khusus untuk menyelesaikan masalah ini, mari kita lihat seterusnya.
props
Melalukan fungsi ke dalam komponen
Seperti yang dinyatakan sebelum ini, anda tidak boleh melakukan apa-apa seperti ini dalam Vue.
<template> <ChildComponent :function="myFunction" /> </template> export default { methods: { myFunction() { // ... } } };
React vs Vue
Menggunakan Acara
Dalam komponen induk, kami mendengar acara:
// ChildComponent export default { created() { this.$emit('created'); } }
Terdapat banyak lagi yang boleh anda lakukan dengan acara, dan itu hanya menconteng permukaan. Adalah sangat disyorkan untuk menyemak dokumentasi rasmi Vue untuk mengetahui lebih lanjut mengenainya, ia pasti bernilai membaca.
<template> <ChildComponent @created="handleCreate" /> </template> export default { methods: { handleCreate() { console.log('Child has been created.'); } } };
Mengakses data dalam skop komponen induk daripada komponen anak
"Dapatkan nilai daripada kelas induk"
Jika anda mahu komponen anak mengakses kaedah komponen induk, kemudian luluskan kaedah secara terus sebagai prop nampak ringkas dan mudah.
Dalam komponen induk kita akan melakukan ini:Dalam komponen anak kita, gunakan kaedah lulus dalam:
<!-- Parent --> <template> <ChildComponent :method="parentMethod" /> </template> // Parent export default { methods: { parentMethod() { // ... } } }
Melakukan ini akan Apa masalahnya ?
// Child export default { props: { method: { type: Function }, }, mounted() { // Use the parent function directly here this.method(); } }
Panggil kaedah yang diluluskan dalam komponen anak dan lulus nilai komponen anak sebagai parameter kaedah:
<!-- Parent --> <template> <ChildComponent :method="parentMethod" /> </template> // Parent export default { methods: { parentMethod(valueFromChild) { // Do something with the value console.log('From the child:', valueFromChild); } } }
Ini tidak salah sama sekali, adalah mungkin untuk melakukan ini.
// Child export default { props: { method: { type: Function }, }, data() { return { value: 'I am the child.' }; }, mounted() { // Pass a value to the parent through the function this.method(this.value); } }
Dalam komponen kanak-kanak kita mengeluarkan peristiwa:
<!-- Parent --> <template> <ChildComponent @send-message="handleSendMessage" /> </template> // Parent export default { methods: { handleSendMessage(event, value) { // Our event handler gets the event, as well as any // arguments the child passes to the event console.log('From the child:', value); } } }
Acara sangat berguna dalam Vue, tetapi ia juga tidak 100% menyelesaikan masalah kita masalah dengan berkesan. Kadangkala, kita perlu mengakses skop kanak-kanak daripada ibu bapa dengan cara yang berbeza.
// Child export default { props: { method: { type: Function }, }, data() { return { value: 'I am the child.' }; }, mounted() { // Instead of calling the method we emit an event this.$emit('send-message', this.value); } }
Menggunakan Slot Skop
【Cadangan berkaitan: "tutorial vue.js"]
Atas ialah kandungan terperinci Bolehkah prop melepasi fungsi dalam vue?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!