Rumah >hujung hadapan web >View.js >Bagaimana untuk berkomunikasi antara komponen ibu bapa dan anak dalam Vue? Mari kita bercakap tentang kaedah mewariskan dari bapa kepada anak lelaki dan dari anak kepada bapa.
Bagaimana untuk berkomunikasi antara komponen ibu bapa dan anak dalam Vue? Artikel berikut akan membawa anda memahami komunikasi antara komponen ibu bapa dan anak Vue, dan memperkenalkan kaedah ibu bapa menyampaikan nilai kepada anak dan nilai lulus anak kepada ibu bapa saya harap ia akan membantu semua orang.
Apakah komponen ibu bapa-anak?
Perkenalkan komponen lain ke dalam komponen, dan komponen yang diperkenalkan dipanggil sub-komponen Kerana pemodulatan Vue, bahagian biasa akan diekstrak ke dalam modul yang berasingan, dan semua kandungan halaman akan Ditulis dalam fail vue, kerana kemodulan, masalah komunikasi antara dua modul tidak dapat dielakkan. [Cadangan berkaitan: "Tutorial vue.js"]
Dalam vue, satu komponen sering menggunakan data komponen atau Kaedah lain, pada masa ini terdapat masalah komunikasi antara komponen ibu bapa dan anak
1 Tengok kod dulu, penerangan di bawah
<body> //父组件 <div id="app"> <cpn3 :ctitle="title"></cpn3> </div> //子组件 <template id="cpn3"> <div> <h1>{{ctitle}}</h1> <p>orange</p> </div> </template> <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> <script> //子组件 Vue.component("cpn3", { template: "#cpn3", // 组件里的data是一个函数,必须要返回一个对象,变量写在返回对象里 props: { ctitle: { type: String, default () { return {} } } } }) //父组件 const app = new Vue({ el: "#app", data: { title: 'orange' }, methods: {}, }) </script> </body>
:
1. Mula-mula tulis komponen pemisahan templat asas
2. Tambahkan atribut prop pada sub-komponen dalam mod objek, anda boleh menulis parameter yang perlu anda lalui parameter juga dalam mod objek , kodnya agak jelas,
//子组件 Vue.component("cpn3", { template: "#cpn3", // 组件里的data是一个函数,必须要返回一个对象,变量写在返回对象里 props: { ctitle: { //参数也使用对象形式,type传类型 default函数,是在找不到参数时返回一个值显示 type: String, default () { return {} } } } })
2 Kemudian tambahkan atribut yang diperlukan pada komponen induk
//父组件 const app = new Vue({ el: "#app", data: { //这里的title就是要传入子组件的属性 在父组件中定义 title: 'orange' }, methods: {}, })
3 komponen induk
<div id="app"> //可以理解为将父组件中title 赋值给 ctitle,这样子组件就可以使用父组件的data属性了 <cpn3 :ctitle="title"></cpn3> </div>
4 Akhir sekali, gunakan nama sifat yang ditakrifkan oleh subkomponen dalam subkomponen
//子组件 <template id="cpn3"> <div> //这里的属性名为ctitle <h1>{{ctitle}}</h1> </div> </template>
1. Pemindahan daripada anak kepada ibu bapa bermakna kandungan komponen anak diserahkan kepada komponen induk, supaya komponen induk boleh menggunakan data yang diluluskan oleh komponen anak pada bila-bila masa Kaedah penggunaan adalah : fungsi tersuai
1. Mula-mula kita Untuk membuat produk bar sisi Taobao tiruan, klik atau gerakkan tetikus ke atas untuk memaparkan contoh produk kandungan
2. Mengambil gambar di atas sebagai contoh, mari kita bercakap tentang penghantaran komponen Mewariskan daripada anak kepada ibu bapa
2.1 Mari kita pisahkan komponen anak dan komponen induk dahulu, dan terangkan satu persatu . Mari kita lihat kod komponen anak
<!-- 子组件 --> <template id="cpn"> <div> <h1>{{ctitle}}</h1> <button v-for="item in list" @click="goodsclick(item)">{{item.name}}</button> </div> </template> <script> Vue.component("cpn", { template: '#cpn', //父传子 props props: { ctitle: { type: String, //找不到数据时 default () { return {} } } }, data() { return { list: [{ id: 'phone', name: '手机' }, { id: 'tv', name: '电视' }, { id: 'p', name: '家电' }, { id: 'computer', name: '电脑' }, ] } }, //子传父 自定义事件 methods: { // 自定义事件 goodsclick(item) { this.$emit('itemclick', item) } } }) </script>
penjelasan: Subkomponen adalah untuk menulis komponen (html) dan membungkusnya, dan ia boleh digunakan pada bila-bila masa bersamaan dengan html, hanya dibungkus (pemahaman ini tidak sepatutnya menjadi masalah)
1. Subkomponen Seperti vue, ia mempunyai data, kaedah dan atribut ini Jadi tulis tatasusunan dalam data, dan kemudian gunakan v-for untuk melintasi dan menjana butang Tiada perbezaan daripada penulisan biasa, kemudian tulis fungsi, ikat acara klik, dan hantar item, iaitu objek yang diluluskan dalam tatasusunan, ke dalam fungsi,
<button v-for="item in list" @click="goodsclick(item)">{{item.name}}</button>
2 langkah penting dan kritikal Di sini ia datang, dalam fungsi acara klik yang anda terikat, hantar fungsi tersuai kepada komponen induk, iaitu, hantar ke komponen induk
methods: { // 自定义事件 goodsclick(item) { //itemclick就是自定义函数,并且将item也传过去给父组件 this.$emit('itemclick', item) } }
Ini adalah komponen kanak-kanak Selepas menulis, ini adalah gaya komponen kanak-kanak, seperti yang ditunjukkan dalam gambar di atas
2. Seterusnya, mari kita bercakap tentang bagaimana komponen induk menerima acara tersuai daripada komponen kanak-kanak
<!-- 父组件 --> <div id="app"> <cpn :ctitle="title" @itemclick="cpnclick"></cpn> </div> <script> //父组件 const app = new Vue({ el: "#app", data: { title: "title", }, methods: { cpnclick(item) { console.log("cpnclick", item); } } }) </script>
Jelaskan: selepas anda menulis sub-komponen, anda perlu memanggilnya hanya nama komponen anda sebagai label 🎜>Tulis fungsi dalam komponen induk dan ikat di dalamnya Tentukan peristiwa tersuai yang diluluskan daripada komponen anak, supaya komponen anak berjaya diikat dan komponen anak memindahkan data ke komponen induk Akhir bab ini
<cpn :ctitle="title" @itemclick="cpnclick"></cpn>Lebih banyak pengetahuan berkaitan pengaturcaraan, Sila lawati:
Pengenalan kepada Pengaturcaraan
! !Atas ialah kandungan terperinci Bagaimana untuk berkomunikasi antara komponen ibu bapa dan anak dalam Vue? Mari kita bercakap tentang kaedah mewariskan dari bapa kepada anak lelaki dan dari anak kepada bapa.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!