Zusammenfassung und Beispiele der Kommunikationsmethoden für Vue3-Komponenten

Zusammenfassung und Beispiele der Kommunikationsmethoden für Vue3-Komponenten

Die Kommunikationsmodi der Vue3-Komponenten sind wie folgt

  • Requisiten
  • $emit
  • $aussetzen / ref
  • $attrs
  • V-Modell
  • bereitstellen / injizieren
  • Vuex
  • Fausthandschuh

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

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

attts

attrs: 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-Modell

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

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

Fausthandschuh

Die 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:
  • Detaillierte Erläuterung der Kommunikation zwischen nicht übergeordneten und untergeordneten Komponenten in Vue3
  • Details zu 7 Arten der Komponentenkommunikation in Vue3
  • Vue3.x verwendet mitt.js für die Komponentenkommunikation
  • Schritte für Vue3 zur Verwendung von Mitt für die Komponentenkommunikation

<<:  Detaillierter Prozess der NTP-Serverkonfiguration unter Linux

>>:  Erklären Sie den Unterschied zwischen Iframe und Frame in HTML anhand von Beispielen

Artikel empfehlen

Detaillierte Erläuterung des Kapselungsbeispiels für Netzwerkanforderungen

Exportstandard ({ URL (URL = URL = URL), Methode ...

Das WeChat-Applet realisiert die Chatroom-Funktion

In diesem Artikel wird der spezifische Code des W...

Detaillierte Erläuterung verschiedener Speichermethoden von Docker-Containern

Inhaltsverzeichnis Vorne geschrieben Mehrere Spei...

Codebeispiel für einen einfachen UDP-Server-Client

Ich werde nicht näher auf die Theorie von UDP ein...

Zusammenfassung der Kenntnisse und der Verwendung von Linux-VI-Befehlen

Detaillierte Erklärung des Linux-Befehls vi Der v...

So stellen Sie Dienste in Windows Server 2016 bereit (Grafisches Tutorial)

Einführung Wenn eine große Anzahl an Systemen ins...

MySQL 8.0 MIT Abfragedetails

Inhaltsverzeichnis Informationen zu WITH-Abfragen...

So implementieren Sie On-Demand-Import und globalen Import in Element-Plus

Inhaltsverzeichnis Import auf Anfrage: Globaler I...

Prioritätsanalyse von und/oder Abfragen in MySQL

Dies ist ein Problem, das leicht übersehen wird. ...

Mehrere Möglichkeiten zum Berechnen des Alters anhand des Geburtstags in MySQL

Ich habe MySQL vorher nicht sehr oft verwendet un...

Implementierung eines Web-Rechners mit nativem JavaScript

In diesem Artikel wird der spezifische JavaScript...