1. Kommunikationsmethode für Vue3-Komponenten
2. So verwenden Sie die Vue3-Kommunikation2.1 Requisiten Es gibt zwei Möglichkeiten, Daten mit Methode 1: Gemischtes Schreiben // Parent.vue überträgt <child :msg1="msg1" :msg2="msg2"></child> <Skript> Kind aus „./child.vue“ importieren importiere { ref, reaktiv } von "vue" Standard exportieren { Daten(){ zurückkehren { msg1: „Dies sind die Informationen der Unterkomponente 1“ } }, aufstellen(){ // Erstellen Sie reaktionsfähige Daten // Schreibmethode 1 ist auf den Basistyp ref anwendbar und hat andere Verwendungszwecke. Das folgende Kapitel führt const msg2 = ref ein („Dies sind die Informationen der Unterkomponente 2“) // Methode 2 eignet sich für komplexe Typen wie Arrays und Objekte const msg2 = reactive(["Dies sind die Informationen der Unterkomponente 2"]) zurückkehren { Nachricht2 } } } </Skript> // Child.vue empfängt <script> Standard exportieren { props: ["msg1", "msg2"], // Wenn diese Zeile nicht geschrieben wird, wird das Folgende nicht empfangen setup(props) { console.log(props) // { msg1: "Dies ist Information 1, die an die untergeordnete Komponente weitergegeben wurde", msg2: "Dies ist Information 2, die an die untergeordnete Komponente weitergegeben wurde" } }, } </Skript> Methode 2: Reines Vue3-Schreiben // Parent.vue überträgt <child :msg2="msg2"></child> <Skript-Setup> Kind aus „./child.vue“ importieren importiere { ref, reaktiv } von "vue" const msg2 = ref("Dies sind die an die untergeordnete Komponente 2 übergebenen Informationen") // oder komplexer Typ const msg2 = reactive(["Dies sind die Informationen der Unterkomponente 2"]) </Skript> // Child.vue empfängt <script setup> // Kein direkter Import erforderlich // import { defineProps } von "vue" 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> Beachten: Wenn die übergeordnete Komponente im gemischten Stil und die untergeordnete Komponente im reinen Wenn die übergeordnete Komponente in reinem Der Beamte sagte außerdem, dass man, da 3 verwendet wird, nicht 2 schreiben solle, weshalb gemischtes Schreiben nicht empfohlen werde. In den folgenden Beispielen wird nur reines Vue3 verwendet und kein gemischtes Schreiben verwendet. 2.2 $emit // Child.vue-Versand // Parent.vue antwortet auf <template> <child @myClick="onMyClick"></child> </Vorlage> <Skript-Setup> Kind aus „./child.vue“ importieren const beiMeinKlick = (msg) => { console.log(msg) // Dies sind die von der übergeordneten Komponente empfangenen Informationen} </Skript> 2.3 ausstellen / referenzierenDie übergeordnete Komponente erhält die Eigenschaften der untergeordneten Komponente oder ruft die Methode der untergeordneten Komponente auf. // Kind.vue <Skript-Setup> // Methode 1 ist nicht auf Vue 3.2 anwendbar, in dem useContext() veraltet ist import { useContext } from "vue" const ctx = useContext() // Extern verfügbar gemachte Eigenschaften und Methoden können ctx.expose({ childName: „Dies ist eine Eigenschaft der untergeordneten Komponente“, irgendeineMethode(){ console.log("Dies ist die Methode der untergeordneten Komponente") } }) // Methode 2 ist auf die Version Vue 3.2 anwendbar, kein Import erforderlich // import { defineExpose } von „vue“ definierenExpose({ childName: „Dies ist eine 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="handlerClick">Schaltfläche</button> </Vorlage> <Skript-Setup> Kind aus „./child.vue“ importieren importiere { ref } von "vue" const comp = ref(null) const handlerClick = () => { console.log(comp.value.childName) // Die von der untergeordneten Komponente bereitgestellten Eigenschaften abrufen comp.value.someMethod() // Die von der untergeordneten Komponente bereitgestellte Methode aufrufen } </Skript> 2.4 Attribute // Parent.vue überträgt <child :msg1="msg1" :msg2="msg2" title="3333"></child> <Skript-Setup> Kind aus „./child.vue“ importieren importiere { ref, reaktiv } von "vue" const msg1 = ref("1111") const msg2 = ref("2222") </Skript> // Child.vue empfängt <script setup> importiere { defineProps, useContext, useAttrs } von "vue" // Version 3.2 muss defineProps nicht einführen, verwenden Sie einfach const props = defineProps({ msg1: Zeichenfolge }) // Methode 1 ist nicht auf Vue 3.2 anwendbar, wo useContext() veraltet ist const ctx = useContext() // Wenn msg1 nicht mithilfe von Props empfangen wird, lautet es { msg1: "1111", msg2: "2222", title: "3333" } console.log(ctx.attrs) // { msg2:"2222", Titel: "3333" } // Methode 2 ist auf die Vue-Version 3.2 anwendbar const attrs = useAttrs() console.log(attrs) // { msg2:"2222", Titel: "3333" } </Skript> 2,5 V-ModellUnterstützt bidirektionale Bindung mehrerer Daten // Übergeordnetes Element.vue <child v-model:key="Schlüssel" v-model:value="Wert"></child> <Skript-Setup> Kind aus „./child.vue“ importieren importiere { ref, reaktiv } von "vue" const Schlüssel = ref("1111") Konstantwert = ref("2222") </Skript> // Kind.vue <Vorlage> <button @click="handlerClick">Schaltfläche</button> </Vorlage> <Skript-Setup> // Methode 1 ist nicht auf Vue 3.2 anwendbar, in dem useContext() veraltet ist import { useContext } from "vue" const { emit } = useContext() // Methode 2 ist auf die Vue-Version 3.2 anwendbar und muss nicht eingeführt werden // import { defineEmits } from "vue" const emit = defineEmits(["Schlüssel","Wert"]) // Verwendung const handlerClick = () => { emit("update:key", "neuer Schlüssel") emit("update:value", "neuer Wert") } </Skript> 2.6 bereitstellen / injizieren
// Übergeordnetes Element.vue <Skript-Setup> importiere { biete } von "vue" angeben("Name", "Muhua") </Skript> // Kind.vue <Skript-Setup> importiere { inject } von "vue" const name = inject("name") console.log(name) // Mu Hua</script> 2.7 Vuex// speichern/index.js importiere { createStore } von "vuex" exportiere Standard createStore({ Status: {Anzahl: 1}, Getter: { getCount: Status => Status.Anzahl }, Mutationen: hinzufügen(Zustand){ Zustand.Anzahl++ } } }) // Haupt.js importiere { createApp } aus "vue" App aus „./App.vue“ importieren Store aus "./store" importieren erstelleApp(App).verwenden(store).mount("#app") // Seite.vue // Methode 1: <template> direkt verwenden <div>{{ $store.state.count }}</div> <button @click="$store.commit('add')">Schaltfläche</button> </Vorlage> // Methode 2 zum Abrufen von <script setup> importiere { useStore, berechnet } von "vuex" const store = useStore() Konsole.log(Store.Status.Anzahl) // 1 const count = computed(()=>store.state.count) // Responsive, ändert sich, wenn sich die Vuex-Daten ändern console.log(count) // 1 </Skript> Dies ist das Ende dieses Artikels über die Details der 7 Arten der Komponentenkommunikation in Das könnte Sie auch interessieren:
|
<<: So installieren Sie Docker unter Windows 10 Home Edition
>>: So kommunizieren Sie mit anderen Benutzern über die Linux-Befehlszeile
Wenn wir den MySQL-Dienst verwenden, beträgt die ...
Was ist HTTP? Wenn wir eine Website durchsuchen m...
Inhaltsverzeichnis Tomcat-Einführung Tomcat-Berei...
In diesem Artikel finden Sie eine ausführliche An...
Beispiel: Tipp: Diese Komponente basiert auf der ...
1. Upgrade-Vorgang: sudo apt-get update Probleme ...
1. Software-Download MySQL-Download und -Installa...
Der Linux-Stream-Editor ist eine nützliche Möglic...
Inhaltsverzeichnis Installieren Sie Jupyter Docke...
Inhaltsverzeichnis Ursache: durchlaufen: 1. Konst...
Inhaltsverzeichnis 1. Schloss und Riegel 2. Wiede...
Die Ausführungsbeziehung zwischen dem href-Sprung...
1. Ordner löschen Beispiel: rm -rf /usr/java Das ...
Inhaltsverzeichnis Arithmetische Operatoren Abnor...
Inhaltsverzeichnis 【Allgemeine Befehle】 [Zusammen...