Bagaimana untuk menyediakan komunikasi ibu bapa-anak dalam vuejs
Cara menyediakan komunikasi ibu bapa-anak dalam vuejs: 1. Komponen induk menggunakan prop untuk menghantar data kepada komponen anak 2. Komponen anak menghantar mesej kepada komponen induk melalui "$emit"; . Gunakan ".sync" gula sintaksis; 4. Gunakan "$attrs" dan "$pendengar";
Persekitaran pengendalian tutorial ini: sistem Windows 7, vue versi 2.9.6, komputer DELL G3.
Terdapat beberapa cara untuk berkomunikasi antara komponen ibu bapa dan anak Vue:
props
$emit -- biasanya digunakan untuk enkapsulasi komponen
.sync -- sintaksis gula
$attrs dan $listeners -- digunakan untuk enkapsulasi komponen Terdapat banyak
private dan inject -- komponen pesanan tinggi
Yang berikut akan memperkenalkan masing-masing
1. props
Ini biasanya digunakan dalam pembangunan harian, secara ringkasnya, kita boleh menghantar data kepada sub-komponen melalui prop, sama seperti paip air, data komponen induk mengalir dari. atas ke bawah ke sub-komponen , tidak boleh mengalir melawan aliran. Ini juga merupakan aliran data tunggal pengenalan reka bentuk Vue.
<div id="app"> <child :content="message"></child> </div> // Js let Child = Vue.extend({ template: '<h2 id="nbsp-content-nbsp">{{ content }}</h2>', props: { content: { type: String, default: () => { return 'from child' } } } }) new Vue({ el: '#app', data: { message: 'from parent' }, components: { Child } })
2. $emit
Pengenalan rasmi adalah untuk mencetuskan peristiwa pada tika semasa dan parameter tambahan akan dihantar kepada panggilan balik pendengar.
<div id="app"> <my-button @greet="sayHi"></my-button> </div> let MyButton = Vue.extend({ template: '<button @click="triggerClick">click</button>', data () { return { greeting: 'vue.js!' } }, methods: { triggerClick () { this.$emit('greet', this.greeting) } } }) new Vue({ el: '#app', components: { MyButton }, methods: { sayHi (val) { alert('Hi, ' + val) // 'Hi, vue.js!' } } })
3. .sync modifier
pernah wujud sebagai fungsi mengikat dua hala dalam vue1.x, iaitu komponen anak boleh mengubah suai komponen induk nilai. Kerana ia melanggar konsep reka bentuk aliran data sehala, ia telah dialih keluar dalam vue2.x, tetapi pengubah suai .sync ini telah diperkenalkan semula dalam vue 2.3.0 dan ke atas. Tetapi ia hanya wujud sebagai gula sintaksis masa kompilasi. Ia dilanjutkan sebagai pendengar v-on yang mengemas kini sifat komponen induk secara automatik.
Dalam sesetengah kes, kita mungkin perlu melakukan "pengikatan dua hala" pada prop. Malangnya, pengikatan dua hala yang benar menimbulkan masalah penyelenggaraan kerana komponen anak boleh mengubah suai komponen induknya tanpa sumber perubahan yang jelas dalam komponen induk atau anak.
Gula sintaks ditulis dalam bentuk berikut
<text-document> </text-document>
Jadi kita boleh menggunakan gula sintaks .sync untuk menyingkatkannya dalam bentuk berikut
<text-document v-bind:title.sync="doc.title"></text-document>
Jadi bagaimana untuk mencapai pengikatan dua hala , contohnya, menukar nilai dalam kotak teks komponen anak sambil menukar nilai dalam komponen induk, kodnya adalah seperti berikut
<div id="app"> <login :name.sync="userName"></login> {{ userName }} </div> let Login = Vue.extend({ template: ` <div class="input-group"> <label>姓名:</label> <input v-model="text"> </div> `, props: ['name'], data () { return { text: '' } }, watch: { text (newVal) { this.$emit('update:name', newVal) } } }) new Vue({ el: '#app', data: { userName: '' }, components: { Login } })
Hanya ada satu ayat dalam kod:
this.$emit('update:name', newVal)
Sintaks rasmi ialah: kemas kini: myPropName di mana myPropName mewakili nilai prop yang akan dikemas kini. Sudah tentu, jika anda tidak menggunakan .sync syntax sugar dan menggunakan .$emit di atas, anda boleh mencapai kesan yang sama
4 $attrs dan $listeners
Laman web rasmi untuk $attrs Penjelasan adalah seperti berikut:
Mengandungi pengikatan harta (kecuali kelas dan gaya) yang tidak diiktiraf (dan diperoleh) sebagai prop dalam skop induk. Apabila komponen tidak mengisytiharkan sebarang prop, semua pengikatan skop induk (kecuali kelas dan gaya) akan disertakan di sini dan komponen dalaman boleh dihantar melalui v-bind="$attrs" - apabila mencipta komponen peringkat tinggi Sangat berguna.
Tapak web rasmi menerangkan $listeners seperti berikut:
Mengandungi pendengar acara v-on dalam skop induk (tanpa pengubah .native). Ia boleh dihantar ke dalam komponen dalaman melalui v-on="$listeners" - sangat berguna apabila mencipta komponen peringkat lebih tinggi.
Atribut $attrs dan $listeners adalah seperti dua kotak penyimpanan, satu bertanggungjawab untuk menyimpan atribut dan satu lagi bertanggungjawab untuk menyimpan acara kedua-duanya menyimpan data dalam bentuk objek
<div id="app"> <child :foo="foo" :bar="bar" @one.native="triggerOne" @two="triggerTwo"> </child> </div>
let Child = Vue.extend({ template: '<h2 id="nbsp-foo-nbsp">{{ foo }}</h2>', props: ['foo'], created () { console.log(this.$attrs, this.$listeners) // -> {bar: "parent bar"} // -> {two: fn} // 这里我们访问父组件中的 `triggerTwo` 方法 this.$listeners.two() // -> 'two' } }) new Vue({ el: '#app', data: { foo: 'parent foo', bar: 'parent bar' }, components: { Child }, methods: { triggerOne () { alert('one') }, triggerTwo () { alert('two') } } })
Ya Lihat, kami boleh menghantar data melalui $attrs dan $listeners, dan sangat mudah untuk menghubungi dan memproses jika diperlukan. Sudah tentu, kita juga boleh menurunkannya peringkat demi peringkat melalui v-on="$listeners", dan keturunannya akan menjadi tidak berkesudahan!
5 persendirian dan suntikan
Mari kita lihat penerangan rasmi penyediaan / suntikan:
Menyediakan dan menyuntik terutamanya high-end pemalam/komponen Perpustakaan menyediakan kes penggunaan. Tidak disyorkan untuk digunakan secara langsung dalam kod aplikasi. Dan sepasang pilihan ini perlu digunakan bersama-sama untuk membolehkan komponen nenek moyang menyuntik pergantungan kepada semua keturunannya, tidak kira betapa dalam hierarki komponen itu, dan ia akan sentiasa berkuat kuasa dari masa perhubungan huluan dan hiliran diwujudkan.
<div> <son></son> </div> let Son = Vue.extend({ template: '<h2 id="son">son</h2>', inject: { house: { default: '没房' }, car: { default: '没车' }, money: { // 长大工作了虽然有点钱 // 仅供生活费,需要向父母要 default: '¥4500' } }, created () { console.log(this.house, this.car, this.money) // -> '房子', '车子', '¥10000' } }) new Vue({ el: '#app', provide: { house: '房子', car: '车子', money: '¥10000' }, components: { Son } })
Untuk lebih banyak contoh, sila rujuk pada kod sumber elemen-ui, sebilangan besar daripadanya menggunakan kaedah ini
Cadangan berkaitan: "Tutorial vue.js"
Atas ialah kandungan terperinci Bagaimana untuk menyediakan komunikasi ibu bapa-anak dalam vuejs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Vue.js sesuai untuk projek kecil dan sederhana, manakala React sesuai untuk projek besar dan senario aplikasi yang kompleks. 1) Vue.js mudah digunakan dan sesuai untuk prototaip cepat dan aplikasi kecil. 2) React mempunyai lebih banyak kelebihan dalam mengendalikan pengurusan negara yang kompleks dan pengoptimuman prestasi, dan sesuai untuk projek besar.

Vue.js dan bertindak balas masing -masing mempunyai kelebihan mereka sendiri: vue.js sesuai untuk aplikasi kecil dan perkembangan pesat, sementara React sesuai untuk aplikasi besar dan pengurusan negara yang kompleks. 1.vue.js Menyedari kemas kini automatik melalui sistem responsif, sesuai untuk aplikasi kecil. 2. REACT menggunakan algoritma DOM dan Diff Virtual, yang sesuai untuk aplikasi besar dan kompleks. Apabila memilih rangka kerja, anda perlu mempertimbangkan keperluan projek dan timbunan teknologi pasukan.

Vue.js dan bertindak balas masing -masing mempunyai kelebihan sendiri, dan pilihan harus berdasarkan keperluan projek dan tumpukan teknologi pasukan. 1. Vue.js adalah mesra komuniti, menyediakan sumber pembelajaran yang kaya, dan ekosistem termasuk alat rasmi seperti Vuerouter, yang disokong oleh pasukan rasmi dan masyarakat. 2. Komuniti React adalah berat sebelah terhadap aplikasi perusahaan, dengan ekosistem yang kuat, dan sokongan yang disediakan oleh Facebook dan komuniti, dan mempunyai kemas kini yang kerap.

Netflix menggunakan React untuk meningkatkan pengalaman pengguna. 1) Ciri -ciri komponen React membantu Netflix Split Complex UI ke dalam modul yang boleh diurus. 2) Maya DOM mengoptimumkan kemas kini UI dan meningkatkan prestasi. 3) Menggabungkan Redux dan GraphQL, Netflix dengan cekap menguruskan status aplikasi dan aliran data.

Vue.js adalah kerangka depan, dan rangka kerja belakang digunakan untuk mengendalikan logik sisi pelayan. 1) Vue.js memberi tumpuan kepada membina antara muka pengguna dan memudahkan pembangunan melalui pengikatan data komponen dan responsif. 2) Rangka kerja back-end seperti Express dan Django mengendalikan permintaan HTTP, operasi pangkalan data dan logik perniagaan, dan dijalankan di pelayan.

Vue.js disepadukan dengan tumpuan teknologi front-end untuk meningkatkan kecekapan pembangunan dan pengalaman pengguna. 1) Alat Pembinaan: Mengintegrasikan dengan Webpack dan Rollup untuk mencapai pembangunan modular. 2) Pengurusan Negeri: Bersepadu dengan VUEX untuk menguruskan status aplikasi yang kompleks. 3) Routing: Mengintegrasikan dengan Vuerouter untuk merealisasikan penghalaan aplikasi tunggal halaman. 4) Preprocessor CSS: Menyokong SASS dan kurang untuk meningkatkan kecekapan pembangunan gaya.

Netflix memilih React untuk membina antara muka penggunanya kerana reka bentuk komponen React dan mekanisme DOM maya dapat mengendalikan antara muka yang kompleks dan kemas kini yang kerap. 1) Reka bentuk berasaskan komponen membolehkan Netflix memecah antara muka ke dalam widget yang boleh diurus, meningkatkan kecekapan pembangunan dan pemeliharaan kod. 2) Mekanisme DOM maya memastikan kelancaran dan prestasi tinggi antara muka pengguna Netflix dengan meminimumkan operasi DOM.

Vue.js disukai oleh pemaju kerana mudah digunakan dan berkuasa. 1) Sistem pengikat data responsifnya secara automatik mengemas kini paparan. 2) Sistem komponen meningkatkan kebolehgunaan semula dan mengekalkan kod. 3) Ciri -ciri pengkomputeran dan pendengar meningkatkan kebolehbacaan dan prestasi kod. 4) Menggunakan vuedevtools dan memeriksa kesilapan konsol adalah teknik debugging biasa. 5) Pengoptimuman Prestasi termasuk penggunaan atribut utama, atribut yang dikira dan komponen-komponen Alive. 6) Amalan terbaik termasuk penamaan komponen yang jelas, penggunaan komponen fail tunggal dan penggunaan cangkuk kitaran hidup yang rasional.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Dreamweaver Mac版
Alat pembangunan web visual

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).
