Heim Web-Frontend js-Tutorial Vue-Datenübertragung – Ich verfüge über besondere Implementierungsfähigkeiten

Vue-Datenübertragung – Ich verfüge über besondere Implementierungsfähigkeiten

May 25, 2018 pm 04:23 PM
实现

In diesem Artikel werden hauptsächlich einige spezielle Sortiertechniken für die Vue-Datenübertragung vorgestellt. Freunde, die sie benötigen, können darauf verweisen

Vorwort

Kürzlich Ich bin auf weitere Fragen zum EventBus von Vue gestoßen. Bei der Entscheidung über die Technologieauswahl wurde ich auch nach dem Einsatzbereich von Vuex und EventBus gefragt. Also schreib es einfach auf. Gleichzeitig gibt es eine spezielle Umsetzungslösung.

Es gibt verschiedene Datenübertragungsmethoden: Vuex, Props, EventBus und Special EventBus.

vuex

Wer es nicht einführt, wird nach unten schauen, wenn das Datenvolumen und die Komplexität ihm nicht gewachsen sind.

Requisiten

Demo

Übergeordnete und untergeordnete Komponenten übergeben Werte, offizielle API, schreiben Sie einfach eine Demo.

1. Übergeordnete Komponente

<son :info="info" @update="updateHandler"/>
// data
info: &#39;sendToSon&#39;
// methods
updateHandler (newVal) {
 this.info = newVal
}
Nach dem Login kopieren

2. Untergeordnete Komponente

// props
props: [&#39;info&#39;]
// 向上传值,某个方法中使用
this.$emit(&#39;update&#39;, &#39;got&#39;)
Nach dem Login kopieren

Parent übergibt Wert an untergeordnete Komponente-->props untergeordnetes Element übergibt Wert an übergeordnetes Element-->Der Rückruf des Bindungsereignisses der untergeordneten Komponente wird in der übergeordneten Komponente und der untergeordneten Komponente definiert löst dieses Ereignis aus. Da es nicht empfohlen wird, die in der übergeordneten Komponente übergebenen Requisiten direkt in der untergeordneten Komponente zu ändern, müssen Sie benutzerdefinierte Ereignisse verwenden.

Einschränkungen

Eltern-Kind-Komponenten.

eventBus

Demo

Bus sind alle importierten Businstanzen

// bus
const bus = new Vue()
// 数据接收组件
// 当前组件接收值则
bus.$on(&#39;event1&#39;, (val)=>{})
// 数据发出组件
// 当前组件发出值则
bus.$emit(&#39;event1&#39;, val)
Nach dem Login kopieren

Es ist ersichtlich, dass das Wesentliche eine Vue-Instanz ist, die als Medium für die Ereignisbindung fungiert. Verwenden Sie es in allen Fällen zur Datenkommunikation.

Zwei (mehrere) Parteien nutzen zur Kommunikation Ereignisse mit demselben Namen.

Problem

  1. Wenn $emit, muss es $on sein, sonst wird das Ereignis nicht überwacht Das heißt, es gibt bestimmte gleichzeitige Anforderungen an Komponenten. (Hinweis: Beim Umschalten des Routings wird zuerst die neue Routing-Komponente erstellt und dann die alte Routing-Komponente zerstört. In einigen Fällen können diese beiden Lebenszyklen separat geschrieben werden, siehe diese Frage.)

  2. $on wird nach der Zerstörung der Komponente nicht automatisch aufgehoben. Wenn dieselbe Komponente mehrmals generiert wird, wird das Ereignis mehrmals gebunden und $emit wird einmal ausgelöst. und es sind mehrere Antworten erforderlich.

  3. Die Daten sind keine „langlebigen“ Daten und können nicht gespeichert werden. Sie werden erst nach $emit wirksam.

Gibt es also eine passendere Lösung?

SonderveranstaltungBus?

Demo

Werfen wir zunächst einen Blick auf den Code, den Online-Code. Busse sind alle importierte Businstanzen.

// bus
const bus = new Vue({
 data () {
  return {
   // 定义数据
   val1: &#39;&#39;
  }
 },
 created () {
  // 绑定监听
  this.$on(&#39;updateData1&#39;, (val)=>{
   this.val1 = val
  })
 }
})
// 数据发出组件
import bus from &#39;xx/bus&#39;
// 触发在bus中已经绑定好的事件
bus.$emit(&#39;update1&#39;, &#39;123&#39;)
// 数据接收组件

{{val1}}
// 使用computed接收数据
computed () {
 val1 () {
  // 依赖并返回bus中的val1
  return bus.val1
 }
}
Nach dem Login kopieren

Anders

  1. Der orthodoxe EventBus ist nur für Bindungs- und auslösende Ereignisse kümmern sich nicht um die Daten und überschneiden sich nicht mit den Daten. Diese Lösung fügt einen weiteren Schritt hinzu, um Daten direkt zur Businstanz hinzuzufügen. Und Ereignisüberwachung und Datenergänzung müssen im Voraus definiert werden.

  2. Der Datenempfänger nutzt nicht mehr $on, um sich über Datenänderungen zu informieren, sondern empfängt diese passiv über die Eigenschaften berechneter Attribute.

Probleme gelöst

Müssen Kommunikationskomponenten gleichzeitig vorhanden sein? Die Daten werden auf dem Bus gespeichert, daher gibt es keine Anforderungen.

Mehrmals binden? Die Bindungsmonitore befinden sich alle im Bus und werden nicht wiederholt gebunden.

Daten sind erst nach $emit verfügbar? Mithilfe berechneter Eigenschaften können Sie den auf dem Bus gespeicherten Wert direkt lesen, ohne das Ereignis erneut auszulösen.

Besprechen Sie

Warum berechnete Eigenschaften verwendet werden

Tatsächlich sollte es der Grund sein, warum sie nicht direkt zu Daten hinzugefügt werden können , wie zum Beispiel data1: bus .data1? Wir können uns einen anderen Teil des Codes ansehen, den Online-Code. Ändern Sie den Bus auf

data () {
 return {
  // 多一层结构
  val: {
   result: 0
  }
 }
},
created () {
 this.$on(&#39;update1&#39;, val => {
  console.log(&#39;触发1&#39;, i1++)
  this.val.result = val
 })
}
Nach dem Login kopieren

und ändern Sie die Datenempfangskomponente auf

// template
data中获取直接修改值:{{dataResult}}
data中获取直接修改值的父层:{{dataVal}}
computed中依赖直接修改值:{{computedResult}}
// js
data () {
  return {
   // 获取直接修改值
   dataResult: bus.val.result,
   // 获取直接修改值的父层
   dataVal: bus.val
  }
 },
 computed: {
  computedResult () {
   // 依赖直接修改值
   return bus.val.result
  }
 }
Nach dem Login kopieren

wie Sie sehen, dass Daten, die den aus Daten erhaltenen Wert direkt ändern, nicht dynamisch reagieren können.

Warum Ereignis verwenden?

Tatsächlich besteht keine Notwendigkeit, $emit auszulösen. Es ist auch möglich, bus.val = 1 zu verwenden Weisen Sie Werte direkt zu. Warum also nicht dieses Wolltuch?

Vereinfachte Version von vuex

Tatsächlich ist dieser EventBus eine vereinfachte Version von vuex. Es gibt diese Passage in der Vue-Dokumentation:

Komponenten dürfen den Status der Store-Instanz nicht direkt ändern, sondern sollten Aktionen ausführen, um Ereignisse zu verteilen (zu versenden), um den Store über Änderungen zu informieren. Wir haben es endlich erreicht die Flux-Architektur. Der Vorteil dieser Vereinbarung besteht darin, dass wir alle Zustandsänderungen, die im Geschäft auftreten, aufzeichnen können.

Store entspricht der Businstanz, Status entspricht Daten, Aktion entspricht Ereignis und Versand entspricht $emit. Gleichzeitig erfolgt die Datengewinnung durch Komponenten in Vuex über berechnete Eigenschaften. Es ist also eigentlich gar nicht so schwer, die Vuex- und Flux-Architektur zu verstehen und zu verwenden, oder?

Ich habe das Obige für Sie zusammengestellt und hoffe, dass es Ihnen in Zukunft hilfreich sein wird.

Verwandte Artikel:

Implementieren des Datei-Uploads mit Fortschrittsbalken basierend auf Ajax-Technologie

Diskussion über readyState und Status in Ajax Frage

Umfassende Analyse der Parameter der $.Ajax()-Methode (grafisches Tutorial)

Das obige ist der detaillierte Inhalt vonVue-Datenübertragung – Ich verfüge über besondere Implementierungsfähigkeiten. 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)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 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)

Wie implementiert man die doppelte WeChat-Anmeldung auf Huawei-Mobiltelefonen? Wie implementiert man die doppelte WeChat-Anmeldung auf Huawei-Mobiltelefonen? Mar 24, 2024 am 11:27 AM

Wie implementiert man die doppelte WeChat-Anmeldung auf Huawei-Mobiltelefonen? Mit dem Aufkommen der sozialen Medien ist WeChat zu einem unverzichtbaren Kommunikationsmittel im täglichen Leben der Menschen geworden. Viele Menschen können jedoch auf ein Problem stoßen: Sie können sich gleichzeitig auf demselben Mobiltelefon bei mehreren WeChat-Konten anmelden. Für Huawei-Mobiltelefonbenutzer ist es nicht schwierig, eine doppelte WeChat-Anmeldung zu erreichen. In diesem Artikel wird erläutert, wie eine doppelte WeChat-Anmeldung auf Huawei-Mobiltelefonen erreicht wird. Erstens bietet das EMUI-System, das mit Huawei-Mobiltelefonen geliefert wird, eine sehr praktische Funktion – das doppelte Öffnen von Anwendungen. Durch die doppelte Öffnungsfunktion der Anwendung können Benutzer gleichzeitig

Verwenden Sie Java, um Code zur Implementierung von Liebesanimationen zu schreiben Verwenden Sie Java, um Code zur Implementierung von Liebesanimationen zu schreiben Dec 23, 2023 pm 12:09 PM

Liebesanimationseffekte durch Java-Code realisieren Im Bereich der Programmierung sind Animationseffekte sehr verbreitet und beliebt. Mit Java-Code können verschiedene Animationseffekte erzielt werden, darunter der Herzanimationseffekt. In diesem Artikel wird erläutert, wie Sie mithilfe von Java-Code diesen Effekt erzielen, und es werden spezifische Codebeispiele aufgeführt. Der Schlüssel zum Realisieren des Herzanimationseffekts besteht darin, das herzförmige Muster zu zeichnen und den Animationseffekt durch Ändern der Position und Farbe der Herzform zu erzielen. Hier ist der Code für ein einfaches Beispiel: importjavax.swing.

So implementieren Sie die WeChat-Klonfunktion auf Huawei-Mobiltelefonen So implementieren Sie die WeChat-Klonfunktion auf Huawei-Mobiltelefonen Mar 24, 2024 pm 06:03 PM

So implementieren Sie die WeChat-Klonfunktion auf Huawei-Mobiltelefonen Mit der Popularität sozialer Software und der zunehmenden Bedeutung von Datenschutz und Sicherheit rückt die WeChat-Klonfunktion allmählich in den Mittelpunkt der Aufmerksamkeit der Menschen. Die WeChat-Klonfunktion kann Benutzern helfen, sich gleichzeitig bei mehreren WeChat-Konten auf demselben Mobiltelefon anzumelden, was die Verwaltung und Nutzung erleichtert. Es ist nicht schwierig, die WeChat-Klonfunktion auf Huawei-Mobiltelefonen zu implementieren. Sie müssen lediglich die folgenden Schritte ausführen. Schritt 1: Stellen Sie sicher, dass die Version Ihres Mobiltelefonsystems und die WeChat-Version den Anforderungen entsprechen. Stellen Sie zunächst sicher, dass die Version Ihres Huawei-Mobiltelefonsystems sowie die WeChat-App auf die neueste Version aktualisiert wurden.

PHP-Programmierhandbuch: Methoden zur Implementierung der Fibonacci-Folge PHP-Programmierhandbuch: Methoden zur Implementierung der Fibonacci-Folge Mar 20, 2024 pm 04:54 PM

Die Programmiersprache PHP ist ein leistungsstarkes Werkzeug für die Webentwicklung, das eine Vielzahl unterschiedlicher Programmierlogiken und Algorithmen unterstützen kann. Unter diesen ist die Implementierung der Fibonacci-Folge ein häufiges und klassisches Programmierproblem. In diesem Artikel stellen wir vor, wie Sie die Fibonacci-Folge mit der Programmiersprache PHP implementieren, und fügen spezifische Codebeispiele bei. Die Fibonacci-Folge ist eine mathematische Folge, die wie folgt definiert ist: Das erste und das zweite Element der Folge sind 1, und ab dem dritten Element ist der Wert jedes Elements gleich der Summe der beiden vorherigen Elemente. Die ersten paar Elemente der Sequenz

Entwicklungsvorschläge: So verwenden Sie das ThinkPHP-Framework zur Implementierung asynchroner Aufgaben Entwicklungsvorschläge: So verwenden Sie das ThinkPHP-Framework zur Implementierung asynchroner Aufgaben Nov 22, 2023 pm 12:01 PM

„Entwicklungsvorschläge: So verwenden Sie das ThinkPHP-Framework zur Implementierung asynchroner Aufgaben“ Mit der rasanten Entwicklung der Internettechnologie stellen Webanwendungen immer höhere Anforderungen an die Verarbeitung einer großen Anzahl gleichzeitiger Anforderungen und komplexer Geschäftslogik. Um die Systemleistung und das Benutzererlebnis zu verbessern, erwägen Entwickler häufig die Verwendung asynchroner Aufgaben, um einige zeitaufwändige Vorgänge auszuführen, z. B. das Senden von E-Mails, das Verarbeiten von Datei-Uploads, das Erstellen von Berichten usw. Im Bereich PHP bietet das ThinkPHP-Framework als beliebtes Entwicklungsframework einige praktische Möglichkeiten zur Implementierung asynchroner Aufgaben.

Meistern Sie, wie Golang Möglichkeiten für die Spieleentwicklung eröffnet Meistern Sie, wie Golang Möglichkeiten für die Spieleentwicklung eröffnet Mar 16, 2024 pm 12:57 PM

Im heutigen Bereich der Softwareentwicklung wird Golang (Go-Sprache) als effiziente, prägnante und hochgradig parallele Programmiersprache von Entwicklern zunehmend bevorzugt. Seine umfangreiche Standardbibliothek und die effizienten Parallelitätsfunktionen machen es zu einer hochkarätigen Wahl im Bereich der Spieleentwicklung. In diesem Artikel wird untersucht, wie man Golang für die Spieleentwicklung verwendet, und seine leistungsstarken Möglichkeiten anhand spezifischer Codebeispiele demonstriert. 1. Golangs Vorteile bei der Spieleentwicklung: Als statisch typisierte Sprache wird Golang beim Aufbau großer Spielsysteme verwendet.

Implementierungshandbuch für PHP-Spielanforderungen Implementierungshandbuch für PHP-Spielanforderungen Mar 11, 2024 am 08:45 AM

Implementierungsleitfaden für PHP-Spielanforderungen Mit der Popularität und Entwicklung des Internets erfreut sich der Markt für Webspiele immer größerer Beliebtheit. Viele Entwickler hoffen, die PHP-Sprache zur Entwicklung ihrer eigenen Webspiele nutzen zu können, und die Umsetzung der Spielanforderungen ist ein wichtiger Schritt. In diesem Artikel wird erläutert, wie Sie mithilfe der PHP-Sprache allgemeine Spielanforderungen implementieren und spezifische Codebeispiele bereitstellen. 1. Spielfiguren erstellen In Webspielen sind Spielfiguren ein sehr wichtiges Element. Wir müssen die Attribute des Spielcharakters wie Name, Level, Erfahrungswert usw. definieren und Methoden für deren Bedienung bereitstellen

So implementieren Sie eine exakte Divisionsoperation in Golang So implementieren Sie eine exakte Divisionsoperation in Golang Feb 20, 2024 pm 10:51 PM

Die Implementierung exakter Divisionsoperationen in Golang ist ein häufiger Bedarf, insbesondere in Szenarien mit Finanzberechnungen oder anderen Szenarien, die hochpräzise Berechnungen erfordern. Der in Golang integrierte Divisionsoperator „/“ wird für Gleitkommazahlen berechnet, und manchmal besteht das Problem eines Präzisionsverlusts. Um dieses Problem zu lösen, können wir Bibliotheken von Drittanbietern oder benutzerdefinierte Funktionen verwenden, um exakte Divisionsoperationen zu implementieren. Ein gängiger Ansatz ist die Verwendung des Rat-Typs aus dem Paket math/big, der eine Darstellung von Brüchen bereitstellt und zur Implementierung exakter Divisionsoperationen verwendet werden kann.

See all articles