Heim Web-Frontend View.js So richten Sie die Eltern-Kind-Kommunikation in vuejs ein

So richten Sie die Eltern-Kind-Kommunikation in vuejs ein

Sep 06, 2021 pm 03:26 PM
vuejs 父子通信

So richten Sie die Eltern-Kind-Kommunikation in vuejs ein: 1. Die übergeordnete Komponente verwendet Requisiten, um Daten an die untergeordnete Komponente zu übergeben. 2. Die untergeordnete Komponente sendet Nachrichten über „$emit“ an die übergeordnete Komponente. 3. Verwenden Sie „. sync“-Syntaxzucker; 4. Verwenden Sie „ $attrs“ und „$listeners“; 5. Verwenden Sie private und inject.

So richten Sie die Eltern-Kind-Kommunikation in vuejs ein

Die Betriebsumgebung dieses Tutorials: Windows 7-System, Vue-Version 2.9.6, DELL G3-Computer.

Vue Es gibt mehrere Möglichkeiten, zwischen übergeordneten und untergeordneten Komponenten zu kommunizieren:

  • props

  • $emit – Komponentenkapselung wird häufiger verwendet

  • .sync – syntaktischer Zucker

  • $attrs und $listeners – werden häufig für die Komponentenkapselung verwendet

  • privide und inject – Komponenten höherer Ordnung

Im Folgenden werden

1 bzw. props

vorgestellt, die häufig im Alltag verwendet werden Entwicklung, um es einfach auszudrücken: Wir können Daten über Requisiten an Unterkomponenten weitergeben, genau wie bei einer Wasserleitung. Die Daten von der übergeordneten Komponente fließen von oben nach unten zur Unterkomponente und können nicht zurückfließen. Dies ist auch der einzelne Datenfluss der Designeinführung von Vue.

<div id="app">
  <child :content="message"></child>
</div>
// Js
let Child = Vue.extend({
  template: &#39;<h2>{{ content }}</h2>&#39;,
  props: {
    content: {
      type: String,
      default: () => { return &#39;from child&#39; }
    }
  }
})
new Vue({
  el: &#39;#app&#39;,
  data: {
    message: &#39;from parent&#39;
  },
  components: {
    Child
  }
})
Nach dem Login kopieren

2. $emit

Die offizielle Einführung besteht darin, Ereignisse auf der aktuellen Instanz auszulösen, und zusätzliche Parameter werden an den Listener-Rückruf übergeben.

<div id="app">
  <my-button @greet="sayHi"></my-button>
</div>
let MyButton = Vue.extend({
  template: &#39;<button @click="triggerClick">click</button>&#39;,
  data () {
    return {
      greeting: &#39;vue.js!&#39;
    }
  },
  methods: {
    triggerClick () {
      this.$emit(&#39;greet&#39;, this.greeting)
    }
  }
})
new Vue({
  el: &#39;#app&#39;,
  components: {
    MyButton
  },
  methods: {
    sayHi (val) {
      alert(&#39;Hi, &#39; + val) // &#39;Hi, vue.js!&#39;
    }
  }
})
Nach dem Login kopieren

3. Der .sync-Modifikator

existierte früher als bidirektionale Bindungsfunktion in vue1.x, das heißt, die untergeordnete Komponente kann den Wert in der übergeordneten Komponente ändern. Da es gegen das Designkonzept des unidirektionalen Datenflusses verstößt, wurde es in vue2.x entfernt, aber dieser .sync-Modifikator wurde in vue 2.3.0+ und höher wieder eingeführt. Es existiert jedoch nur als syntaktischer Zucker zur Kompilierungszeit. Es wird als V-On-Listener erweitert, der die Eigenschaften der übergeordneten Komponente automatisch aktualisiert.

In einigen Fällen müssen wir möglicherweise eine „Zwei-Wege-Bindung“ an einer Requisite durchführen. Leider führt eine echte bidirektionale Bindung zu Wartungsproblemen, da untergeordnete Komponenten ihre übergeordneten Komponenten ändern können, ohne dass eine offensichtliche Änderungsquelle für die übergeordneten oder untergeordneten Komponenten vorliegt.

Der syntaktische Zucker wird in der folgenden Form geschrieben

<text-document
    v-bind:title="doc.title"
    v-on:update:title="doc.title = $event">
</text-document>
Nach dem Login kopieren

So können wir .sync-Syntaxzucker verwenden, um ihn in der folgenden Form abzukürzen:

<text-document v-bind:title.sync="doc.title"></text-document>
Nach dem Login kopieren

So erreichen wir eine bidirektionale Bindung, indem wir beispielsweise den Wert im Text ändern Feld der untergeordneten Komponente, während der Wert im Wert der übergeordneten Komponente geändert wird, lautet der Code wie folgt:

<div id="app">
  <login :name.sync="userName"></login> {{ userName }}
</div>

let Login = Vue.extend({
  template: `
    <div class="input-group">
      <label>姓名:</label>
      <input v-model="text">
    </div>
  `,
  props: [&#39;name&#39;],
  data () {
    return {
      text: &#39;&#39;
    }
  },
  watch: {
    text (newVal) {
      this.$emit(&#39;update:name&#39;, newVal)
    }
  }
})

new Vue({
  el: &#39;#app&#39;,
  data: {
    userName: &#39;&#39;
  },
  components: {
    Login
  }
})
Nach dem Login kopieren

Der Code enthält nur einen Satz:

this.$emit(&#39;update:name&#39;, newVal)
Nach dem Login kopieren

Die offizielle Syntax lautet: update:myPropName, wobei myPropName den Prop-Wert darstellt aktualisiert werden. Wenn Sie .sync-Syntaxzucker nicht verwenden und oben .$emit verwenden, können Sie natürlich den gleichen Effekt erzielen

4 $attrs und $listeners

Die offizielle Website erklärt $attrs wie folgt:

Enthält Elemente, die sich nicht im übergeordneten Bereich befinden. Eigenschaftsbindungen (außer Klasse und Stil), die als Requisiten erkannt (und abgerufen) werden. Wenn eine Komponente keine Requisiten deklariert, werden alle übergeordneten Bereichsbindungen (außer Klasse und Stil) hier einbezogen, und interne Komponenten können über v-bind="$attrs" übergeben werden – beim Erstellen von Komponenten auf hoher Ebene Sehr nützlich.

Die offizielle Website erklärt $listeners wie folgt:

Enthält V-on-Ereignis-Listener im übergeordneten Bereich (ohne .native-Modifikator). Es kann über v-on="$listeners" an interne Komponenten übergeben werden – sehr nützlich beim Erstellen von Komponenten auf höherer Ebene.

$attrs- und $listeners-Attribute sind wie zwei Speicherboxen, eine ist für die Speicherung von Attributen und die andere für die Speicherung von Ereignissen verantwortlich. Beide speichern Daten in Form von Objekten

<div id="app">
  <child
    :foo="foo"
    :bar="bar"
    @one.native="triggerOne"
    @two="triggerTwo">
  </child>
</div>
Nach dem Login kopieren
let Child = Vue.extend({
  template: &#39;<h2>{{ foo }}</h2>&#39;,
  props: [&#39;foo&#39;],
  created () {
    console.log(this.$attrs, this.$listeners)
    // -> {bar: "parent bar"}
    // -> {two: fn}
    // 这里我们访问父组件中的 `triggerTwo` 方法
    this.$listeners.two()
    // -> &#39;two&#39;
  }
})

new Vue({
  el: &#39;#app&#39;,
  data: {
    foo: &#39;parent foo&#39;,
    bar: &#39;parent bar&#39;
  },
  components: {
    Child
  },
  methods: {
    triggerOne () {
      alert(&#39;one&#39;)
    },
    triggerTwo () {
      alert(&#39;two&#39;)
    }
  }
})
Nach dem Login kopieren

Wie Sie sehen können, können wir sie verwenden $attrs und $listeners zum Speichern von Daten. Das Übergeben, Aufrufen und Verarbeiten dort, wo es benötigt wird, ist immer noch sehr praktisch. Natürlich können wir es auch Ebene für Ebene über v-on="$listeners" weitergeben, und die Nachkommen werden endlos sein!

5, privat und inject

Werfen wir einen Blick auf die offizielle Beschreibung von Provide / Inject:

  Provide und Inject stellen hauptsächlich Anwendungsfälle für High-End-Plug-Ins/Komponentenbibliotheken bereit. Nicht für die direkte Verwendung im Anwendungscode empfohlen. Und dieses Optionspaar muss zusammen verwendet werden, damit eine Vorgängerkomponente eine Abhängigkeit in alle ihre Nachkommen einfügen kann, egal wie tief die Komponentenhierarchie ist, und sie wird immer ab dem Zeitpunkt wirksam, an dem die Upstream- und Downstream-Beziehungen hergestellt werden.

<div id="app">

  <son></son>

</div>

let Son = Vue.extend({
  template: &#39;<h2>son</h2>&#39;,
  inject: {
    house: {
      default: &#39;没房&#39;
    },
    car: {
      default: &#39;没车&#39;
    },
    money: {
      // 长大工作了虽然有点钱
      // 仅供生活费,需要向父母要
      default: &#39;¥4500&#39;
    }
  },
  created () {
    console.log(this.house, this.car, this.money)
    // -> &#39;房子&#39;, &#39;车子&#39;, &#39;¥10000&#39;
  }
})

new Vue({
  el: &#39;#app&#39;,
  provide: {
    house: &#39;房子&#39;,
    car: &#39;车子&#39;,
    money: &#39;¥10000&#39;
  },
  components: {
    Son
  }
})
Nach dem Login kopieren

Weitere Beispiele finden Sie im Element-UI-Quellcode, von dem viele diese Methode verwenden

Verwandte Empfehlungen: „vue.js Tutorial

Das obige ist der detaillierte Inhalt vonSo richten Sie die Eltern-Kind-Kommunikation in vuejs ein. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Einige Tipps zum Entwickeln von Android-Anwendungen mit Vue.js und der Kotlin-Sprache Einige Tipps zum Entwickeln von Android-Anwendungen mit Vue.js und der Kotlin-Sprache Jul 31, 2023 pm 02:17 PM

Einige Tipps für die Entwicklung von Android-Anwendungen mit Vue.js und der Kotlin-Sprache. Mit der Beliebtheit mobiler Anwendungen und dem kontinuierlichen Wachstum der Benutzeranforderungen hat die Entwicklung von Android-Anwendungen bei Entwicklern immer mehr Aufmerksamkeit auf sich gezogen. Bei der Entwicklung von Android-Apps ist die Wahl des richtigen Technologie-Stacks entscheidend. In den letzten Jahren haben sich die Sprachen Vue.js und Kotlin nach und nach zu einer beliebten Wahl für die Entwicklung von Android-Anwendungen entwickelt. In diesem Artikel werden einige Techniken zum Entwickeln von Android-Anwendungen mit Vue.js und der Kotlin-Sprache vorgestellt und entsprechende Codebeispiele gegeben. 1. Richten Sie zu Beginn die Entwicklungsumgebung ein

Einige Tipps zum Entwickeln von Datenvisualisierungsanwendungen mit Vue.js und Python Einige Tipps zum Entwickeln von Datenvisualisierungsanwendungen mit Vue.js und Python Jul 31, 2023 pm 07:53 PM

Einige Tipps für die Entwicklung von Datenvisualisierungsanwendungen mit Vue.js und Python Einführung: Mit dem Aufkommen des Big-Data-Zeitalters ist die Datenvisualisierung zu einer wichtigen Lösung geworden. Bei der Entwicklung von Datenvisualisierungsanwendungen kann die Kombination von Vue.js und Python Flexibilität und leistungsstarke Funktionen bieten. In diesem Artikel werden einige Tipps für die Entwicklung von Datenvisualisierungsanwendungen mit Vue.js und Python gegeben und entsprechende Codebeispiele beigefügt. 1. Einführung in Vue.js Vue.js ist ein leichtes JavaScript

Integration von Vue.js mit Objective-C, Tipps und Ratschläge zur Entwicklung zuverlässiger Mac-Apps Integration von Vue.js mit Objective-C, Tipps und Ratschläge zur Entwicklung zuverlässiger Mac-Apps Jul 30, 2023 pm 03:01 PM

Integration von Vue.js und Objective-C-Sprache, Tipps und Vorschläge für die Entwicklung zuverlässiger Mac-Anwendungen. In den letzten Jahren haben Entwickler mit der Popularität von Vue.js in der Front-End-Entwicklung und der Stabilität von Objective-C in der Mac-Anwendungsentwicklung begonnen Ich versuche, beides zu kombinieren, um zuverlässigere und effizientere Mac-Anwendungen zu entwickeln. In diesem Artikel werden einige Tipps und Vorschläge vorgestellt, die Entwicklern helfen sollen, Vue.js und Objective-C korrekt zu integrieren und hochwertige Mac-Anwendungen zu entwickeln. eins

Integration von Vue.js und Lua-Sprache, Best Practices und Erfahrungsaustausch beim Aufbau von Front-End-Engines für die Spieleentwicklung Integration von Vue.js und Lua-Sprache, Best Practices und Erfahrungsaustausch beim Aufbau von Front-End-Engines für die Spieleentwicklung Aug 01, 2023 pm 08:14 PM

Die Integration von Vue.js und der Lua-Sprache, Best Practices und Erfahrungsaustausch zum Aufbau einer Front-End-Engine für die Spieleentwicklung. Einführung: Mit der kontinuierlichen Weiterentwicklung der Spieleentwicklung ist die Wahl der Spiele-Front-End-Engine zu einer wichtigen Entscheidung geworden. Unter diesen Optionen sind das Vue.js-Framework und die Lua-Sprache in den Fokus vieler Entwickler gerückt. Als beliebtes Front-End-Framework verfügt Vue.js über ein reichhaltiges Ökosystem und praktische Entwicklungsmethoden, während die Lua-Sprache aufgrund ihrer leichten und effizienten Leistung häufig in der Spieleentwicklung verwendet wird. In diesem Artikel erfahren Sie, wie das geht

So verwenden Sie PHP und Vue.js, um Datenfilter- und Sortierfunktionen in Diagrammen zu implementieren So verwenden Sie PHP und Vue.js, um Datenfilter- und Sortierfunktionen in Diagrammen zu implementieren Aug 27, 2023 am 11:51 AM

Wie man PHP und Vue.js verwendet, um Datenfilter- und Sortierfunktionen in Diagrammen zu implementieren. In der Webentwicklung sind Diagramme eine sehr gängige Art der Datendarstellung. Datenfilter- und Sortierfunktionen in Diagrammen können einfach mit PHP und Vue.js implementiert werden, sodass Benutzer die Anzeige von Daten in Diagrammen anpassen und die Datenvisualisierung und Benutzererfahrung verbessern können. Zuerst müssen wir einen Datensatz vorbereiten, den das Diagramm verwenden soll. Angenommen, wir haben eine Datentabelle, die drei Spalten enthält: Name, Alter und Klassen. Die Daten lauten wie folgt: Name, Alter, Klasse, Zhang San, 1890 Li

Integration der Vue.js- und Dart-Sprache sowie praktische und entwicklungsbezogene Fähigkeiten zum Erstellen cooler UI-Schnittstellen für mobile Anwendungen Integration der Vue.js- und Dart-Sprache sowie praktische und entwicklungsbezogene Fähigkeiten zum Erstellen cooler UI-Schnittstellen für mobile Anwendungen Aug 02, 2023 pm 03:33 PM

Integration von Vue.js und Dart-Sprache, Übung und Entwicklungsfähigkeiten zum Erstellen cooler UI-Schnittstellen für mobile Anwendungen. Einführung: Bei der Entwicklung mobiler Anwendungen ist das Design und die Implementierung der Benutzeroberfläche (UI) ein sehr wichtiger Teil. Um eine coole Schnittstelle für mobile Anwendungen zu erreichen, können wir Vue.js in die Dart-Sprache integrieren und die leistungsstarken Datenbindungs- und Komponentenisierungsfunktionen von Vue.js sowie die umfangreiche Entwicklungsbibliothek für mobile Anwendungen der Dart-Sprache nutzen, um atemberaubende mobile Anwendungen zu erstellen UI-Schnittstelle. Dieser Artikel zeigt Ihnen, wie es geht

Entwickeln Sie effiziente Webcrawler und Daten-Scraping-Tools mit den Sprachen Vue.js und Perl Entwickeln Sie effiziente Webcrawler und Daten-Scraping-Tools mit den Sprachen Vue.js und Perl Jul 31, 2023 pm 06:43 PM

Verwenden Sie die Sprachen Vue.js und Perl, um effiziente Webcrawler und Daten-Scraping-Tools zu entwickeln. Mit der rasanten Entwicklung des Internets und der zunehmenden Bedeutung von Daten ist auch die Nachfrage nach Web-Crawlern und Daten-Scraping-Tools gestiegen. In diesem Zusammenhang ist es eine gute Wahl, Vue.js und die Perl-Sprache zu kombinieren, um effiziente Webcrawler und Daten-Scraping-Tools zu entwickeln. In diesem Artikel wird vorgestellt, wie man ein solches Tool mit Vue.js und der Perl-Sprache entwickelt, und es werden entsprechende Codebeispiele beigefügt. 1. Einführung in Vue.js und die Perl-Sprache

So implementieren Sie mit Vue QQ-ähnliche Chat-Blaseneffekte So implementieren Sie mit Vue QQ-ähnliche Chat-Blaseneffekte Sep 20, 2023 pm 02:27 PM

So implementieren Sie mit Vue QQ-ähnliche Chat-Blaseneffekte. Im heutigen sozialen Zeitalter ist die Chat-Funktion zu einer der Kernfunktionen mobiler Anwendungen und Webanwendungen geworden. Eines der häufigsten Elemente in der Chat-Oberfläche ist die Chat-Blase, die die Nachrichten des Absenders und des Empfängers klar unterscheiden kann und so die Lesbarkeit der Nachricht effektiv verbessert. In diesem Artikel wird erläutert, wie Sie mit Vue QQ-ähnliche Chat-Blaseneffekte implementieren, und es werden spezifische Codebeispiele bereitgestellt. Zuerst müssen wir eine Vue-Komponente erstellen, um die Chat-Blase darzustellen. Die Komponente besteht aus zwei Hauptteilen

See all articles