


Bagaimana untuk berkomunikasi dalam situasi yang berbeza dalam vue? cara berkongsi
Bagaimana untuk berkomunikasi dalam situasi berbeza dalam Vue? Artikel berikut akan menganalisis kaedah komunikasi dalam vue dalam keadaan yang berbeza saya harap ia akan membantu semua orang.
Malah, semua orang sudah biasa dengan komunikasi komponen dalam vue. Kalau buka mulut pun, lagipun inilah yang sering ditanya dalam temuduga. Oleh kerana saya tidak mempertimbangkannya dengan teliti sebelum ini, apabila saya menulis projek kecil, saya menghadapi keperluan untuk komunikasi dalam komponen, dan kemudian saya mula menulisnya Ternyata ia tidak berguna untuk masa yang lama, saya sedar bahawa kaedah itu tidak sesuai untuk keadaan ini. Jadi selepas kejadian ini, saya memutuskan untuk menulis artikel untuk mengklasifikasikan kaedah komunikasi dengan lebih jelas dan berhati-hati Lagipun, tidak setiap kaedah komunikasi sesuai untuk semua senario. (Belajar perkongsian video: tutorial vuejs)
Dalam tetingkap yang sama (iaitu, dalam tab yang sama pada penyemak imbas yang sama)
Tetingkap yang sama Apa yang terlibat terutamanya dalam tab halaman yang sama pada penyemak imbas ialah pemindahan nilai antara komponen ibu bapa dan anak.
vuex: pengurus negeri: terpakai kepada mana-mana komponen dalam projek, sangat bertolak ansur
Anda mungkin tidak tahu konsep pengurus negeri sama ada keanehan.
- Berbilang komponen boleh berkongsi satu atau lebih nilai keadaan. Tidak kira betapa dalam hierarki komponen, ia boleh diakses secara normal. Jadi ini adalah kaedah komunikasi yang disokong secara langsung secara rasmi.
- Nota: Untuk aplikasi satu halaman kecil, pilihan ini tidak begitu disyorkan Untuk projek kecil, menggunakan vuex akan menjadi lebih rumit, seperti 75kg 150cm Seseorang yang berukuran 170cm dan berat. 110 paun memakai sehelai pakaian Ia kelihatan sangat longgar dan tidak boleh dipegang.
menyediakan / menyuntik (ditulis berdasarkan v2.2.1 dan ke atas): sesuai untuk komponen peringkat N, tetapi mestilah jenis warisan satu baris
- bersamaan dengan bangunan dengan tingkat N Peringkat atas ialah komponen induk Terdapat paip biasa di antara setiap lantai. Paip mempunyai pintu keluar pada setiap tingkat yang dipanggil: inject
- Nota:
- dan
provide
ikatan tidak responsif. Walau bagaimanapun, jika anda lulus dalam objek yang boleh didengar, sifat objek masih responsif.inject
Mari kita lihat kod
// parent.vue // 此处忽略template模板的东西 <script> export default { name: 'parent', // provide有两种写法 // 第一种 provide: { a: 1, b: 2 } // 第二种 provide() { return { a: 1, b: 2 } } } </script>
// child.vue // 此处忽略template模板的东西 <script> export default { name: 'child', // inject // 第一种 inject: [ 'a', 'b' ] // 第二种 inject: { abc: { // 可以指定任意不与data,props冲突的变量名,然后指定是指向provide中的哪个变量 from: 'a', default: 'sfd' // 如果默认值不是基本数据类型,那就得改用:default: () => {a:1,b:2} }, b: { default: '33' } } } </script>
props: terpakai pada pemindahan nilai antara dua komponen bersebelahan (ibu bapa->anak); emit : Anak-> Ibu bapa
Prop serius/$emit terlalu biasa dan digunakan secara berlebihan, jadi tidak perlu menulis kod sampel.- Hanya sesuai untuk pemindahan nilai antara komponen ibu bapa dan anak pada tahap bersebelahan
- Walaupun prop juga boleh digunakan untuk memindahkan nilai untuk komponen berbilang peringkat, tetapi, ini akan menjadikan kod Sangat sukar untuk dikekalkan dan sangat tidak disyorkan.
eventBus: Status adalah serupa dengan vuex, sesuai untuk mana-mana komponen, sangat inklusif
Masalah:- Menyusahkan untuk maintain : Jika digunakan terlalu banyak dalam projek, konflik nama kaedah boleh menyebabkan pengecualian dan lebih menyusahkan untuk menyelesaikan masalah.
- Contoh:
// utils/eventBus.js import Vue from 'vue' const EventBus = new Vue() export default EventBus
// main.js // 进行全局挂载 import eventBus from '@/utils/eventBus' Vue.prototype.$eventBos = eventBus
// views/parent.vue <template> <div> <button @click="test">测试</button> </div> </template> <script> export default { data() { return {} }, methods: { test() { this.$eventBus.$emit('testBus', 'test') } } }
// views/child.vue <template> <div> {{ testContent }} <!-- test --> </div> </template> <script> export default { data() { return { testContent: '' } }, mounted() { this.$eventBus.$on('test', e => this.testContent = e) } }
$attrs / $pendengar
- $ attrs
- Penjelasan rasmi:
- Atribut yang dihantar daripada komponen induk kepada subkomponen tersuai Jika tiada
- diterima, ia akan ditetapkan secara automatik ke kedudukan paling luar di dalam subkomponen. Pada teg lapisan, jika ia
prop
danclass
,style
danclass
teg paling luar akan digabungkan.style
Jika komponen anak tidak mahu mewarisi atribut bukan - yang dihantar oleh komponen induk, anda boleh menggunakan
prop
untuk melumpuhkan warisan, dan kemudian gunakaninheritAttrs
untuk menetapkan bukan- Atributv-bind="$attrs"
dihantar dari luar ke teg yang diingini, tetapi ini tidak akan berubahprop
danclass
style
Apabila komponen induk menghantar nilai kepada komponen anak, tetapi komponen anak tidak semuanya melepasi nilai dalam props Apabila mengisytiharkan, anda boleh menggunakan - diterima, ia akan ditetapkan secara automatik ke kedudukan paling luar di dalam subkomponen. Pada teg lapisan, jika ia
- dalam komponen anak untuk proksi untuk mendapatkan semua nilai yang diluluskan oleh komponen induk.
$attrs
Contoh: Ini ialah komponen induk
- Penjelasan rasmi:
-
- Ini ialah komponen kanak-kanak: tiada prop yang diisytiharkan
- Ini ialah paparan dom:
- 此时,通过dom可以发现,所有没有声明的信息,全部出现在了子组件的根元素上。
- 如果要让没有声明的信息不出现在子组件的根元素上,那就在子组件与data同级的位置加个属性:inheritAttrs: false;这样就不会未通过props接收的变量就不会出现在子组件的根元素上了
- 至于怎么传递给子组件的子组件的子组件的子组件....等,那就需要给子组件的子组件依次都绑定:v-bind="$attrs"即可。
- 注意这样只适用于传递数据。
- $listeners
-
官方解释:包含了父作用域中的 (不含
.native
修饰器的)v-on
事件监听器。它可以通过v-on="$listeners"
传入内部组件——在创建更高层次的组件时非常有用 - 当父组件向子组件传递回调时,子组件可以通过$listeners代理所有回调。
示例:这是父组件
-
官方解释:包含了父作用域中的 (不含
这是子组件
-
这是执行展示:
-
同时可以发现子组件加上inheritAttrs:false之后根组件里的未声明props接受的变量消失了
- 最后:建议最好不要用这个玩意,虽然他们都可以相对便捷的将第一级组件的属性,方法回调传递给N级子组件中的任一级,但是之后进行bug定位,或者分析需求将会是一个比较大的挑战。
不同窗口(同浏览器不同页签内)
同浏览器的不同页签之间的通讯,大多数的场景是:项目里的增删改查都是打开的新页面,然后新增结束后就触发列表页重新获取列表。这种场景下有什么方法呢?
监听stroage事件
// 需要监听的页面 mounted() { window.addEventListener('storage', this.storageEvent); }, beforeDestroy() { window.removeEventListener() } methods: { storageEvent(e) { console.log("storage值发生变化后触发:", e) } }
- 切记:第一条:要记得将监听的事件在组件销毁之前解除监听。否则会给你惊”喜“
- 切记:第二条:其中监听方法回调一定要在methods中定义,然后通过this进行引用,否则你在解除事件监听的时候将无效。
不同浏览器
不同浏览器的同一网站的有通讯的必要吗?
如果有那就:websocket(比如聊天室)
哈哈哈哈
Atas ialah kandungan terperinci Bagaimana untuk berkomunikasi dalam situasi yang berbeza dalam vue? cara berkongsi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Netflix terutamanya menganggap prestasi, skalabiliti, kecekapan pembangunan, ekosistem, hutang teknikal dan kos penyelenggaraan dalam pemilihan rangka kerja. 1. Prestasi dan Skalabiliti: Java dan Springboot dipilih untuk memproses data besar -besaran dan permintaan serentak yang tinggi. 2. Kecekapan Pembangunan dan Ekosistem: Gunakan React untuk meningkatkan kecekapan pembangunan front-end dan menggunakan ekosistemnya yang kaya. 3. Hutang Teknikal dan Penyelenggaraan Kos: Pilih Node.js untuk membina mikroservis untuk mengurangkan kos penyelenggaraan dan hutang teknikal.

Netflix terutamanya menggunakan React sebagai rangka kerja front-end, ditambah dengan VUE untuk fungsi tertentu. 1) Komponen React dan DOM maya meningkatkan prestasi dan kecekapan pembangunan aplikasi Netflix. 2) VUE digunakan dalam alat dalaman dan projek kecil Netflix, dan fleksibiliti dan kemudahan penggunaannya adalah kunci.

Vue.js adalah rangka kerja JavaScript yang progresif yang sesuai untuk membina antara muka pengguna yang kompleks. 1) Konsep terasnya termasuk data responsif, komponen dan DOM maya. 2) Dalam aplikasi praktikal, ia boleh ditunjukkan dengan membina aplikasi todo dan mengintegrasikan vuerouter. 3) Apabila debugging, disyorkan untuk menggunakan Vuedevtools dan Console.log. 4) Pengoptimuman prestasi boleh dicapai melalui V-IF/V-Show, senarai pengoptimuman rendering, pemuatan asynchronous komponen, dll.

Vue.js sesuai untuk projek kecil dan sederhana, sementara React lebih sesuai untuk aplikasi besar dan kompleks. 1. Sistem responsif vue.js secara automatik mengemas kini DOM melalui pengesanan ketergantungan, menjadikannya mudah untuk menguruskan perubahan data. 2. Leact mengamalkan aliran data sehala, dan data mengalir dari komponen induk ke komponen kanak-kanak, menyediakan aliran data yang jelas dan struktur yang mudah dibuang.

Vue.js sesuai untuk projek kecil dan sederhana dan lelaran yang cepat, sementara React sesuai untuk aplikasi besar dan kompleks. 1) Vue.js mudah digunakan dan sesuai untuk situasi di mana pasukan tidak mencukupi atau skala projek kecil. 2) React mempunyai ekosistem yang lebih kaya dan sesuai untuk projek dengan prestasi tinggi dan keperluan fungsional yang kompleks.

Kaedah untuk melaksanakan lompatan tag dalam Vue termasuk: menggunakan tag dalam templat HTML untuk menentukan atribut HREF. Gunakan komponen router-link routing VUE. Gunakan ini. $ Router.push () kaedah dalam JavaScript. Parameter boleh dilalui melalui parameter pertanyaan dan laluan dikonfigurasikan dalam pilihan penghala untuk lompatan dinamik.

Terdapat kaedah berikut untuk melaksanakan lompat komponen di Vue: Gunakan Router-Link dan & lt; Router-View & GT; Komponen untuk melaksanakan lompat hiperpautan, dan tentukan: untuk atribut sebagai laluan sasaran. Gunakan & lt; router-view & gt; Komponen secara langsung untuk memaparkan komponen yang dijalankan yang sedang dialihkan. Gunakan kaedah router.push () dan router.replace () untuk navigasi programatik. Bekas menjimatkan sejarah dan yang kedua menggantikan laluan semasa tanpa meninggalkan rekod.

Terdapat dua cara untuk melompat elemen div di Vue: Gunakan Vue Router dan tambahkan komponen router-link. Tambah pendengar acara @Click dan panggil ini. $ Router.push () kaedah untuk melompat.


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

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

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

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan