Detaillierte Erklärung der Wertübertragung zwischen übergeordneten und untergeordneten Komponenten in Vue3

Detaillierte Erklärung der Wertübertragung zwischen übergeordneten und untergeordneten Komponenten in Vue3

Seit der Geburt von vue3 ist viel Zeit vergangen und der Autor hat erst vor kurzem begonnen, vue3 zu lernen. Im Vergleich zu Vue2 hat Vue3 beim Schreiben erhebliche Änderungen erfahren. Das typischste Beispiel ist, dass Vue3 die Datenreaktionsfähigkeit über Ref oder Reactive implementiert. Aufgrund des Aufkommens von Ref und Reactive hat sich auch die Art und Weise der Werteübergabe zwischen übergeordneten und untergeordneten Komponenten in Vue3 geändert.

Schauen wir uns zunächst an, wie man es in vue2 schreibt

Übergeordnete Komponente:

<!-- Übergeordnete Komponente -->
<Vorlage>
  <div>
    <Kinder :title="Titel" @getChildren="getChildren"></Kinder>
    <div>Unterkomponente sagt: {{ childrenAsk }}</div>
  </div>
</Vorlage>
 
<Skript>
  Kinder aus „./children.vue“ importieren
  Standard exportieren {
    Daten() {
      zurückkehren {
        Titel: „Ich bin der von der übergeordneten Komponente übergebene Wert“,
        KinderFragen: ""
      }
    },
    Methoden: {
      getChildren(Wert) {
        this.childrenAsk = Wert
      }
    }
  }
</Skript>

Unterkomponenten:

<!-- Untergeordnete Komponente -->
<Vorlage>
  <div>
    <div>Von der übergeordneten Komponente übergebener Wert: {{ title }}</div>
    <button @click="askToFather">Klicken, um an die übergeordnete Komponente zu senden</button>
  </div>
</Vorlage>
<Skript>
  Standard exportieren {
    Requisiten: {
      Titel:
        Typ: Zeichenfolge
      }
    },
    Daten() {
      zurückkehren {
        askMsg: „Das habe ich der übergeordneten Komponente gesagt“
      }
    },
    Methoden: {
      fragDenVater() {
        dies.$emit("getChildren", dies.askMsg)
      }
    }
  }
</Skript>

In vue2 wird die Wertübertragung von der untergeordneten Komponente zur übergeordneten Komponente über this.$emit implementiert, in vue3 gibt es dies jedoch nicht. In vue3 sind sowohl Daten als auch Funktionen im Setup gekapselt. Wie implementiert vue3 dies also?

Wir wissen, dass das Setup in vue3 zwei Parameter erhält. Der erste Parameter ist props, also der Props-Wert, der von der übergeordneten Komponente an die untergeordnete Komponente übergeben wird. Der zweite Wert ist context, der das aktuelle Kontextobjekt darstellt. Da wir dies nun wissen, können wir die Wertübertragung von der übergeordneten zur untergeordneten Komponente von vue3 implementieren.

Die Eltern-Kind-Vererbung in Vue3 ist die gleiche wie die Eltern-Kind-Vererbung in Vue2. Ich werde nicht noch einmal näher darauf eingehen. Der Fokus liegt im Folgenden auf der Kind-Eltern-Vererbung in Vue3.

Übergeordnete Komponente

<Vorlage>
  <div style="color: aqua">Übergeordnete Komponente</div>
  <div>Die untergeordnete Komponente sagt mir: {{ children_msg }}</div>
  <Kinder :title="msg" @listen="listenToChildren"></Kinder>
  {{ Wert }}
</Vorlage>
<script lang="ts">
Importiere untergeordnete Elemente aus „@/views/component_emit/children.vue“
importiere { defineComponent, ref } von "vue"
exportiere StandarddefiniereKomponente({
  Komponenten:
    Kinder,
  },
  Name: "Vater",
  aufstellen() {
    let msg = "Ich bin die übergeordnete Komponente"
    let children_msg = ref("") // Die Funktion von ref besteht darin, Reaktionsfähigkeit zu implementieren. Wenn kein ref vorhanden ist, kann Reaktionsfähigkeit nicht implementiert werden (Referenzdatentypen verwenden reaktiv).
    listenToChildren = (Wert) => {
      children_msg.value = val // Um ​​von ref umschlossene Daten zu verwenden, müssen Sie auf deren Wert in der Form .value zugreifen}
    zurückkehren {
      Nachricht,
      Kindernachricht,
      listenToChildren,
    }
  },
})
</Skript>
<Stil></Stil>

Unterkomponenten:

<Vorlage>
  <div style="color: brown">Unterkomponenten</div>
  <!-- Die Methode der Eltern-Kind-Übertragung ist dieselbe wie bei vue2-->
  <div>Der von der übergeordneten Komponente übergebene Wert lautet: {{ title }}</div>
  <button @click="sayToFather">Mit der übergeordneten Komponente sprechen</button>
</Vorlage>
<script lang="ts">
importiere { defineComponent } von "vue"
exportiere StandarddefiniereKomponente({
  Name: "Kinder",
  Requisiten: {
    Titel:
      Typ: Zeichenfolge,
    },
  },
  setup(Eigenschaften, Kontext) {
    // Der Zweck des Kontexts besteht darin, das Kontextobjekt zu erhalten.
    // Wenn setup als setup(props, { emit }) geschrieben wird, kann der folgende Kontext weggelassen werden const sayToFather = () => {
      const ask = "Ich bin eine untergeordnete Komponente, ich spreche mit der übergeordneten Komponente"
      Kontext.emit("zuhören", fragen)
    }
    zurückkehren {
      sagZuVater,
    }
  },
})
</Skript>
<Stil></Stil>

Zusammenfassen

Dieser Artikel endet hier. Ich hoffe, er kann Ihnen helfen. Ich hoffe auch, dass Sie mehr Inhalt auf 123WORDPRESS.COM lesen können!

Das könnte Sie auch interessieren:
  • Datenübertragungs-, Änderungs- und Aktualisierungsmethoden von Vue-Über- und Unterkomponenten
  • So lassen Sie untergeordnete Komponenten die Daten übergeordneter Komponenten in Vue ändern
  • Detaillierte Erläuterung des Problems der bidirektionalen Bindung und Datenaktualisierung von übergeordneten und untergeordneten Wertübertragungen in Vue
  • Vue3.0 Vater-Sohn-Parameterübertragung, untergeordnete Änderung der übergeordneten Daten

<<:  Lösung für den von Mysql systemctl start mysqld gemeldeten Fehler

>>:  Diskussion über Stilanpassung und Browserkompatibilitätsprobleme bei der Verwendung des Eingabeelements [type="file"]

Artikel empfehlen

Detaillierte Erklärung zu sinnvollen Einstellungen des MySQL sql_mode

Sinnvolle Einstellung des MySQL sql_mode sql_mode...

Lernen Sie den Funktionsmechanismus von jsBridge in einem Artikel kennen

Inhaltsverzeichnis js aufrufende Methode Android ...

Ein umfassendes Verständnis der funktionalen Komponenten von Vue.js

Inhaltsverzeichnis Vorwort Funktionale React-Komp...

Zusammenfassung der MySQL-Nutzungsspezifikationen

1. Es muss die InnoDB-Speicher-Engine verwendet w...

Implementierung der ELK-Bereitstellungsmethode mit einem Klick in Docker Compose

Installieren Filebeat hat Logstash-Forwarder voll...

Beschreibung des Meta-Viewport-Attributs in der HTML-Webseite

Beschreibung der HTML-Meta-Viewport-Attribute Was...

JS implementiert einfache Addition und Subtraktion von Warenkorbeffekten

In diesem Artikelbeispiel wird der spezifische JS...

Telnet wird im Alpine-Image zu busybox-extras verschoben

Das Telnet im Alpine-Image wurde nach Version 3.7...

Datenbankabfrage, welches Objekt welches Feld enthält, Methodenanweisung

Die Datenbank fragt ab, welches Objekt welche Fel...

Einführung in den Prozess zum Erstellen eigener FTP- und SFTP-Server

FTP und SFTP werden häufig als Dateiübertragungsp...