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
Heute habe ich ein Problem in HTML gefunden. Es s...
【Frage】 Die INSERT-Anweisung ist eine der am häuf...
Grafisches Tutorial zur Installation und Konfigur...
Die gebräuchlichste Methode besteht darin, einen ...
Kürzlich erhielten wir von einem Kunden eine Bitt...
URL-Loader herunterladen yarn add -D URL-Lader Mo...
Vorwort Jedes Mal, wenn ich das Terminal verwende...
Lassen Sie uns über einige Probleme sprechen, die ...
Karussellanzeige der Vue-Karte beim Umschalten de...
In diesem Artikel wird die MySQL-Datenbank-übergr...
PHP-bezogene Pfade in der Ubuntu-Umgebung PHP-Pfa...
Als technischer Neuling zeichne ich den Vorgang d...
Die Linux-Befehlszeile bietet viele Befehle zum B...
Komponentengrundlagen 1 Wiederverwendung von Komp...
Gestern Abend habe ich mir eine Interviewfrage ang...