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
1 Was ist MVCC Der vollständige Name von MVCC lau...
p>Manuell in "Dienste" starten und e...
Um einen String in ein Array aufzuteilen, müssen ...
Vorwort Es gibt zwei Arten von Nginx-Modulen: off...
Wie wir alle wissen, haben die Webseiten, Websites...
1. Um die Abfrage zu optimieren, sollten Sie voll...
Seitenverzeichnisstruktur Beachten Sie, dass Sie ...
Inhaltsverzeichnis linux 1. Was ist SWAP 2. Was p...
axios installieren und Kommunikation implementier...
Verständnis von Umfragen Tatsächlich liegt der Sc...
Wenn Sie keine Javascript-Steuerung verwenden möch...
Frage Wie greife ich in Docker auf die lokale Dat...
1. Von der offiziellen Website herunterladen und ...
Problembeschreibung Der Schaltflächenstil ist Sym...
Voraussetzung: Celery wird in Django eingeführt. ...