suchen
HeimWeb-FrontendView.jsSo richten Sie die Eltern-Kind-Kommunikation in vuejs ein

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 id="nbsp-content-nbsp">{{ 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
  }
})

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;
    }
  }
})

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>
</text-document>

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>

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
  }
})

Der Code enthält nur einen Satz:

this.$emit(&#39;update:name&#39;, newVal)

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>
let Child = Vue.extend({
  template: &#39;<h2 id="nbsp-foo-nbsp">{{ 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;)
    }
  }
})

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>

  <son></son>

</div>

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

new Vue({
  el: '#app',
  provide: {
    house: '房子',
    car: '车子',
    money: '¥10000'
  },
  components: {
    Son
  }
})

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!

Stellungnahme
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
VUE.JS: Definieren seiner Rolle in der WebentwicklungVUE.JS: Definieren seiner Rolle in der WebentwicklungApr 18, 2025 am 12:07 AM

Vue.js 'Rolle in der Webentwicklung besteht darin, als progressives JavaScript -Framework zu fungieren, das den Entwicklungsprozess vereinfacht und die Effizienz verbessert. 1) Es ermöglicht Entwicklern, sich auf Geschäftslogik durch reaktionsschnelle Datenbindung und Komponentenentwicklung zu konzentrieren. 2) Das Arbeitsprinzip von Vue.js beruht auf reaktionsschnellen Systemen und virtuellem DOM, um die Leistung zu optimieren. 3) In den tatsächlichen Projekten ist es üblich, Vuex zu verwenden, um den globalen Zustand zu verwalten und die Datenreaktionsfähigkeit zu optimieren.

Vue.js verstehen: vor allem ein Frontend -FrameworkVue.js verstehen: vor allem ein Frontend -FrameworkApr 17, 2025 am 12:20 AM

Vue.js ist ein progressives JavaScript -Framework, das von Ihnen Yuxi im Jahr 2014 veröffentlicht wurde, um eine Benutzeroberfläche zu erstellen. Zu den Kernvorteilen gehören: 1. Responsive Datenbindung, automatische Aktualisierungsansicht von Datenänderungen; 2. Komponentenentwicklung kann die Benutzeroberfläche in unabhängige und wiederverwendbare Komponenten aufgeteilt werden.

Netflix -Frontend: Beispiele und Anwendungen von React (oder Vue)Netflix -Frontend: Beispiele und Anwendungen von React (oder Vue)Apr 16, 2025 am 12:08 AM

Netflix verwendet React als Front-End-Framework. 1) Reacts komponentiertes Entwicklungsmodell und ein starkes Ökosystem sind die Hauptgründe, warum Netflix es ausgewählt hat. 2) Durch die Komponentierung spaltet Netflix komplexe Schnittstellen in überschaubare Teile wie Videotiere, Empfehlungslisten und Benutzerkommentare auf. 3) Die virtuelle DOM- und Komponentenlebenszyklus von React optimiert die Rendering -Effizienz und die Verwaltung des Benutzerinteraktion.

Die Frontend -Landschaft: Wie Netflix ihre Auswahl annähteDie Frontend -Landschaft: Wie Netflix ihre Auswahl annähteApr 15, 2025 am 12:13 AM

Die Auswahl von Netflix in der Front-End-Technologie konzentriert sich hauptsächlich auf drei Aspekte: Leistungsoptimierung, Skalierbarkeit und Benutzererfahrung. 1. Leistungsoptimierung: Netflix wählte React als Hauptgerüst und entwickelte Tools wie SpeedCurve und Boomerang, um die Benutzererfahrung zu überwachen und zu optimieren. 2. Skalierbarkeit: Sie übernehmen eine Mikro-Front-End-Architektur, die Anwendungen in unabhängige Module aufteilt und die Entwicklungseffizienz und die Systemskalierbarkeit verbessern. 3. Benutzererfahrung: Netflix verwendet die Material-UI-Komponentenbibliothek, um die Schnittstelle kontinuierlich durch A/B-Tests und Benutzer-Feedback zu optimieren, um Konsistenz und Ästhetik sicherzustellen.

React vs. Vue: Welches Framework verwendet Netflix?React vs. Vue: Welches Framework verwendet Netflix?Apr 14, 2025 am 12:19 AM

NetflixuSesacustomframeworkcalted "Gibbon" Builtonreact, NotreactorVuedirect.1) TeamExperience: Wählen Sie beobädtes Vertrauen

Die Wahl der Frameworks: Was treibt die Entscheidungen von Netflix vor?Die Wahl der Frameworks: Was treibt die Entscheidungen von Netflix vor?Apr 13, 2025 am 12:05 AM

Netflix berücksichtigt hauptsächlich Leistung, Skalierbarkeit, Entwicklungseffizienz, Ökosystem, technische Schulden und Wartungskosten bei der Rahmenauswahl. 1. Leistung und Skalierbarkeit: Java und Springboot werden ausgewählt, um massive Daten und hohe gleichzeitige Anforderungen effizient zu verarbeiten. 2. Entwicklungseffizienz und Ökosystem: Verwenden Sie React, um die Effizienz der Front-End-Entwicklung zu verbessern und sein reiches Ökosystem zu nutzen. 3. Technische Schulden- und Wartungskosten: Wählen Sie Node.js, um Microservices zu erstellen, um Wartungskosten und technische Schulden zu senken.

Reagieren, Vue und die Zukunft von Netflix 'FrontendReagieren, Vue und die Zukunft von Netflix 'FrontendApr 12, 2025 am 12:12 AM

Netflix verwendet React hauptsächlich als Front-End-Framework, das durch VUE für bestimmte Funktionen ergänzt wird. 1) Die Komponentierung von React und das virtuelle DOM verbessern die Leistung und Entwicklungseffizienz von Netflix -Anwendungen. 2) VUE wird in den internen Tools und kleinen Projekten von Netflix verwendet, und seine Flexibilität und Benutzerfreundlichkeit sind entscheidend.

Vue.js im Frontend: Anwendungen und Beispiele in realer WeltVue.js im Frontend: Anwendungen und Beispiele in realer WeltApr 11, 2025 am 12:12 AM

Vue.js ist ein progressives JavaScript -Framework, das zum Erstellen komplexer Benutzeroberflächen geeignet ist. 1) Zu seinen Kernkonzepten gehören Reaktionsdaten, Komponentierungen und virtuelle DOM. 2) In praktischen Anwendungen kann es durch den Aufbau von Todo -Anwendungen und die Integration von Vuerouter demonstriert werden. 3) Beim Debuggen wird empfohlen, VODEVTOOLS und CONSOLE.LOG zu verwenden. 4) Die Leistungsoptimierung kann durch V-IF/V-Show, Listen-Rendering-Optimierung, asynchrone Belastung von Komponenten usw. erreicht werden.

See all articles

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)
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

SecLists

SecLists

SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.