Die Kommunikationsmodi der Vue3-Komponenten sind wie folgt
Requisiten<child :msg2="msg2" /> <Skript-Setup> const props = defineProps({ //Schreibe Methode 1 msg2:String //Methode 2 schreiben msg2:{ Typ: Zeichenfolge, Standard:'' } }) console.log(props) // {msg2:'Dies sind die Informationen der Unterkomponente 2'} </Skript> $emit//Kind.vue <Vorlage> //Methode 1 schreiben <div @click="emit('myclick')">button</div> //Methode 2 schreiben <div @click="handleClick">button</div> </Vorlage> <Skript-Setup> // Methode 1 const emit = defineEmits(['myClick'],['myClick2']) // Methode 2 const handleClick = () => { emit('myClick','Dies sind die Informationen, die an die übergeordnete Komponente gesendet werden'); } // Methode 2 ist nicht auf vue3.2 anwendbar, die Verwendung von useContext() wurde aufgegeben import { useContext } from 'vue' const { emit } = useContext() const handleClick = () => { emit('myClick','Dies sind die Informationen, die an die übergeordnete Komponente gesendet werden' } </Skript> // Parent.vue antwortet auf <template> <child @myClick="onMyClick"></child> </Vorlage> <Skript-Setup> Kind aus „./child.vue“ importieren importiere onMychilk = (msg) => { console.log(msg) // Von der übergeordneten Komponente empfangene Informationen} </Skript> ausstellen / referenzierenDie übergeordnete Komponente erhält die Eigenschaften der untergeordneten Komponente oder ruft die Methode der untergeordneten Komponente auf. <Skript-Setup> // Methode 1: useContext() wurde seit vue3.2 aufgegeben import { useContext } from 'vue' const ctx = useContext() // Extern verfügbar gemachte Eigenschaften und Methoden können ctx.expose({ childName: 'Dies ist die Eigenschaft der untergeordneten Komponente', irgendeineMethode(){ console.log('Dies ist die Methode der untergeordneten Komponente') } }) </Skript> // Parent.vue Hinweis ref="comp" <Vorlage> <child ref="comp"></child> <button @click="handleClick">Schaltfläche</button> </Vorlage> <Skript> Kind aus „./child.vue“ importieren importiere { ref } von 'vue' const comp = ref(null) const handleClick = () => { Konsole.log(comp.value.childName) comp.value.someMethod() //Rufen Sie die von der Unterkomponente bereitgestellte Methode auf} </Skript> atttsattrs: enthält eine Sammlung von Nicht-Props-Attributen des übergeordneten Bereichs außer Klasse und Stil // Übergeordnete Komponente <child :msg1="msg1" :msg2="msg2" title="3333"></child> <Skript-Setup> Kind aus „./child.vue“ importieren importiere { ref,reactive } von 'vue const msg1 = ref('111') const msg2 = ref('222') </Skript> // Unterkomponente <script setup> importiere { defineProps, useContext, useAttars } von 'vue' const props = defineProps({ msg1: Zeichenfolge }) // Methode 1 const ctx = useContext() console.log(ctx.attars) // {msg2:'222',title:'333'} // Methode 2 const attrs = useAttrs() console.log(attars) // {msg2:'2222',title:'3333'} </Skript> V-ModellUnterstützt bidirektionale Bindung mehrerer Daten <child v-model:key="Schlüssel" v-modle:value="Wert" /> <Skript> Kind aus „./child.vue“ importieren importiere { ref, reactive } von 'vue' Konstantschlüssel = ref('111') konstanter Wert = ref('222') </Skript> //Unterkomponente <Vorlage> <button @click="handleClick"></button> </Vorlage> <Skript-Setup> // Methode 1 v3.2 wurde entfernt import { useContext } from 'vue' const { emit } = useContext() // Methode 2import { defineEmits } von 'vue' const emit = defineEmits(['Schlüssel','Wert']) // Verwendung const handleClick = () => { emittieren('update:key','neuer Schlüssel') emit('update:value','neuer Wert') } </Skript> bereitstellen / injizierenprovide/inject ist eine Abhängigkeitsinjektion provide: ermöglicht uns, die Daten anzugeben, die wir an nachfolgende Komponenten weitergeben möchten inject: akzeptiert die Daten, die wir dieser Komponente hinzufügen möchten, in jeder nachfolgenden Komponente, unabhängig davon, wie tief die Komponente verschachtelt ist // Übergeordnete Komponente <Skript-Setup> importiere { provide } von 'vue' const name = bereitstellen('name') console.log('Name','Muhua') </Skript> //Unterkomponente <Skript-Setup> importiere { inject } von 'vue' const name = injizieren('name') console.log(Name) //Muhua</script> Vuex//store/index.js importiere { createStore } von 'vuex' exportiere Standard createStore({ Status: {Anzahl: 1}, Getter: { getCount:state=>state.count }, Mutationen: hinzufügen(Zustand){ Zustand.Anzahl++ } } }) // Haupt.js importiere { createApp } von 'vue' APP aus „./App.vue“ importieren Store aus „./store“ importieren erstelleApp(APP).verwenden(speichern).mount("#app") // <template> direkt verwenden <div> {{ $store.state.count }} </div> <button @click="$store.commit('hinzufügen')"> </button> </Vorlage> // <Skript-Setup> abrufen importiere { useStore,compute } von 'vuex' const store = useStore() Konsole.log(Speicher.Status.Anzahl) Konstante Anzahl = berechnet (()=>store.state.count) console.log(Anzahl) </Skript> FausthandschuhDie komponentenübergreifende EventBus-Kommunikation ist in Vue3 nicht mehr verfügbar. Die Alternative ist mitt.js, aber das Prinzip und die Methode von EventBus sind gleich. Die Installationsmethode ist npm i mitt -S Verkapselung mitt.js Fausthandschuh aus 'Fausthandschuh' importieren const mitt = mitt() Standard-Fausthandschuh exportieren Verwendung zwischen Komponenten // Komponente A <Skript-Setup> importiere mitt von './mitt' const handleClick = () => { mitt.emit('Änderungshandle') } </Skript> // Komponente B <Skript-Setup> importiere mitt von './mitt' importiere { onUnmount } von 'vue' const einigeMethode = () => {...} mitt.on('handleChange',irgendeineMethode) beiNichteingehängt(()=>{ mitt.off('Änderung handhaben',eineMethode) }) </Skript> Damit ist dieser Artikel über die Zusammenfassung und Beispielverwendung von Vue3-Komponentenkommunikationsmethoden abgeschlossen. Weitere Informationen zu den verschiedenen Methoden der Vue3-Komponentenkommunikation finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Detaillierter Prozess der NTP-Serverkonfiguration unter Linux
>>: Erklären Sie den Unterschied zwischen Iframe und Frame in HTML anhand von Beispielen
Schnelles Lesen Warum müssen wir SQL-Anweisungen ...
Es gibt drei Hauptmethoden, CSS auf einer Seite zu...
Ich habe vor Kurzem Docker gelernt und stoße dabe...
Inhaltsverzeichnis Umgebungsvorbereitung Start 1....
Inhaltsverzeichnis Ist setState synchron oder asy...
Liste der HTML-Tags markieren Typ Name oder Bedeu...
Um ein Dropdown-Menü zu schreiben, klicken Sie au...
Das Hinzufügen von Indizes kann die Abfrageeffizi...
Redis ist eine Open-Source-NoSQL-Datenbank, die i...
Hash-Join Für die Ausführung von Hash Join sind k...
Ursprung: Vor einigen Tagen hat ein Tester eine A...
MySQL-Download-Adresse: https://obs.cn-north-4.my...
Inhaltsverzeichnis 1. Synchrones AJAX 2. Asynchro...
In diesem Artikel finden Sie den spezifischen Cod...
1. Regulärer Ausdrucksabgleich ~ für Groß- und Kl...