Details zu 7 Arten der Komponentenkommunikation in Vue3

Details zu 7 Arten der Komponentenkommunikation in Vue3

1. Kommunikationsmethode für Vue3-Komponenten

  • props
  • $emit
  • expose / ref
  • $attrs
  • v-model
  • provide / inject
  • Vuex

2. So verwenden Sie die Vue3-Kommunikation

2.1 Requisiten

Es gibt zwei Möglichkeiten, Daten mit props an untergeordnete Komponenten zu übergeben:

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 Vue3 Stil geschrieben ist, kann sie die Attribute data in der übergeordneten Komponente nicht empfangen, sondern nur die in der Setup-Funktion in der übergeordneten Komponente übergebenen Attribute.

Wenn die übergeordnete Komponente in reinem Vue3 und die untergeordnete Komponente in gemischtem Stil geschrieben ist, können die Eigenschaften in data und setup -Funktionen über props empfangen werden. Wenn die untergeordnete Komponente sie jedoch im Setup empfängt, kann sie nur die Eigenschaften in der setup -Funktion der übergeordneten Komponente empfangen und kann die Eigenschaften in den Daten nicht empfangen.

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
<Vorlage>
//Schreibmethode 1
<button @click="emit('myClick')">Schaltfläche</buttom>
//Schreibmethode 2
<button @click="handleClick">Schaltfläche</buttom>
</Vorlage>
<Skript-Setup>

// Methode 1 ist auf die Version Vue 3.2 anwendbar und muss nicht eingeführt werden
// importiere { defineEmits } von "vue"
// Entsprechende Schreibmethode 1
const emit = defineEmits(["meinClick","myClick2"])
// Entsprechende Schreibmethode 2
const handleClick = ()=>{
emit("myClick", "Dies sind die Informationen, die an die übergeordnete Komponente gesendet werden")
}

// Methode 2 ist nicht auf Vue 3.2 anwendbar, wo useContext() veraltet ist
importiere { useContext } von "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
    const beiMeinKlick = (msg) => {
        console.log(msg) // Dies sind die von der übergeordneten Komponente empfangenen Informationen}
</Skript>

2.3 ausstellen / referenzieren

Die ü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

attrs : enthält eine Sammlung von Nicht- props -Attributen im übergeordneten Bereich außer class und style

// 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-Modell

Unterstü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

provide / inject für Abhängigkeitsinjektion

  • provide : ermöglicht es uns, die Daten anzugeben, die wir an nachfolgende Komponenten weitergeben möchten oder
  • inject : Empfangen Sie die Daten, die Sie dieser Komponente hinzufügen möchten, in jeder untergeordneten Komponente, unabhängig davon, wie tief die Komponente verschachtelt ist, sie können direkt verwendet werden
// Ü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 Vue3 . Weitere Informationen zu den 7 Arten der Komponentenkommunikation in Vue3 finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder durchsuchen Sie die verwandten Artikel weiter unten. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Vue.js muss die Kommunikation zwischen Komponenten jeden Tag lernen
  • Vuejs Kapitel 10: Kommunikation zwischen übergeordneten und untergeordneten Komponenten von Vuejs
  • Acht Möglichkeiten der Komponentenkommunikation in Vue (sammelwürdig!)
  • Kommunikation zwischen Vue-Komponenten: So übergeben untergeordnete Komponenten Werte an übergeordnete Komponenten
  • Implementierung einer Vue-Enkelkomponente, die mit einer Großelternkomponente kommuniziert
  • Detaillierte Erläuterung mehrerer Methoden der Vue-Komponentenübergreifenden Kommunikation
  • Ein tiefer Einblick in Vue.js-Komponenten und Komponentenkommunikation
  • Detaillierte Erläuterung der drei Möglichkeiten der Vue-Komponentenkommunikation
  • Lassen Sie uns ausführlich darüber sprechen, wie Vue-Komponenten die Komponentenkommunikation realisieren

<<:  So installieren Sie Docker unter Windows 10 Home Edition

>>:  So kommunizieren Sie mit anderen Benutzern über die Linux-Befehlszeile

Artikel empfehlen

Detaillierte Erklärung der Socket (TCP)-Bindung aus dem Linux-Quellcode

Inhaltsverzeichnis 1. Ein einfachstes serverseiti...

Detaillierte Schritte zur Neuinstallation von VMware Tools (grafisches Tutorial)

VMware Tools ist ein Tool, das mit virtuellen VMw...

Freigabe der schnellen Wiederherstellungslösung für große MySQL-SQL-Dateien

Vorwort Bei der Verwendung einer MySQL-Datenbank ...

VSCode-Entwicklung UNI-APP Konfigurations-Tutorial und Plugin

Inhaltsverzeichnis Vorne geschrieben Vorsichtsmaß...

WeChat-Applet-Canvas implementiert Signaturfunktion

Im WeChat-Applet-Projekt umfasst das Entwicklungs...

So installieren Sie Docker auf Raspberry Pi

Da Raspberry Pi auf der ARM-Architektur basiert, ...

Einführung in den glibc-Upgradeprozess für Centos6.5

Inhaltsverzeichnis Szenarioanforderungen glibc-Ve...

Tutorial zur Master-Slave-Konfiguration der MySQL-Datenbank unter Windows

Der detaillierte Prozess zum Konfigurieren des My...