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
Inhaltsverzeichnis 1. Ein einfachstes serverseiti...
VMware Tools ist ein Tool, das mit virtuellen VMw...
Laden Sie mysql-5.7.19-winx64 von der offiziellen...
Vorwort Bei der Verwendung einer MySQL-Datenbank ...
Beim Einsatz von Docker in einer Produktionsumgeb...
Inhaltsverzeichnis 1minio ist einfach 2 Docker er...
Inhaltsverzeichnis Vorne geschrieben Vorsichtsmaß...
Es gibt häufig Szenarien, in denen das Bild an di...
Ich habe MySQL unter Windows installiert, indem i...
Im WeChat-Applet-Projekt umfasst das Entwicklungs...
Da Raspberry Pi auf der ARM-Architektur basiert, ...
Version 1.4.2 Offizielle Dokumentation Dockerhub ...
Inhaltsverzeichnis Szenarioanforderungen glibc-Ve...
Der detaillierte Prozess zum Konfigurieren des My...
Sie können den folgenden Befehl verwenden: Docker...