Im Folgenden werden die Schreibmethoden der einzelnen Komponentenkommunikationsmethoden einzeln aufgelistet. 1. Requisiten Die übergeordnete Komponente überträgt Daten an die untergeordnete Komponente. Dies sollte die am häufigsten verwendete Methode sein. Nachdem die untergeordnete Komponente die Daten empfangen hat, kann sie die Daten der übergeordneten Komponente nicht direkt ändern . meldet einen Fehler, sodass die Daten beim erneuten Rendern der übergeordneten Komponente überschrieben werden. Wenn Sie die Unterkomponente ändern möchten, empfiehlt es sich, // Parent.vue überträgt <template> <child :msg="msg"></child> </Vorlage> // Child.vue empfängt Export-Standard { //Schreibmethode 1: Verwenden Sie ein Array, um Props zu empfangen: ['msg'], // Schreibmethode 2: Verwenden Sie zum Empfangen ein Objekt. Sie können den empfangenen Datentyp begrenzen, einen Standardwert festlegen, überprüfen usw. props:{ Nachricht:{ Typ: Zeichenfolge, Standard: „Dies sind die Standarddaten“ } }, montiert(){ console.log(diese.msg) }, } 2. .synchronisieren Es kann uns helfen, die bidirektionale Bindung von Daten zu realisieren, die von der übergeordneten Komponente an die untergeordnete Komponente übergeben werden, sodass die untergeordnete Komponente die Daten direkt nach dem Empfang ändern kann und gleichzeitig auch die Daten der übergeordneten Komponente ändert. // Übergeordnetes Element.vue <Vorlage> <child :page.sync="Seite"></child> </Vorlage> <Skript> Standard exportieren { Daten(){ zurückkehren { Seite:1 } } } // Kind.vue Standard exportieren { Requisiten: ["Seite"], berechnet(){ // Wenn wir currentPage in der untergeordneten Komponente ändern, ändert sich auch die Seite der übergeordneten Komponente currentPage { erhalten(){ diese Seite zurückgeben }, setze(neuerWert){ dies.$emit("update:page", neuerWert) } } } } </Skript> 3. V-Modell Ähnlich wie // Übergeordnetes Element.vue <Vorlage> <child v-model="Wert"></child> </Vorlage> <Skript> Standard exportieren { Daten(){ zurückkehren { Wert: 1 } } } // Kind.vue <Vorlage> <input :value="Wert" @input="handlerChange"> </Vorlage> Standard exportieren { Requisiten: ["Wert"], // Sie können den Ereignisnamen ändern. Der Standardwert ist „input“. Modell:{ Ereignis: „Aktualisierungswert“ }, Methoden:{ handlerChange(e){ dies.$emit("Eingabe", e.Ziel.Wert) // Wenn oben eine Umbenennung steht, sieht diese so aus: $emit("updateValue", e.target.value) } } } </Skript> 4. Referenz Wenn sich ref auf einem normalen // Kind.vue Standard exportieren { Daten(){ zurückkehren { Name:"Muhua" } }, Methoden:{ irgendeineMethode(Nachricht){ Konsole.log(Nachricht) } } } // Übergeordnetes Element.vue <Vorlage> <Kind ref="Kind"></Kind> </Vorlage> <Skript> Standard exportieren { montiert(){ const Kind = dies.$refs.child console.log(child.name) // Muhuachild.someMethod("Die Methode der untergeordneten Komponente wird aufgerufen") } } </Skript> 5. $emit / v-on Untergeordnete Komponenten senden Daten an übergeordnete Komponenten, indem sie Ereignisse versenden oder Aktualisierungen und andere Vorgänge an übergeordneten Komponenten auslösen. // Child.vue Versand Export Standard { Daten(){ return { msg: "Dies ist die Nachricht, die an die übergeordnete Komponente gesendet wurde" } }, Methoden: { handleClick(){ dies.$emit("sendMsg",diese.msg) } }, } // Parent.vue antwortet auf <template> <child v-on:sendMsg="getChildMsg"></child> // oder abgekürzt <child @sendMsg="getChildMsg"></child> </Vorlage> Standard exportieren { Methoden:{ getChildMsg(msg){ console.log(msg) // Dies ist die von der übergeordneten Komponente empfangene Nachricht} } } 6. $attrs / $listeners Dies kann verwendet werden, wenn mehrere Ebenen verschachtelter Komponenten Daten weitergeben, und Sie möchten die Daten nur weitergeben, ohne eine Zwischenverarbeitung durchzuführen, z. B. wenn eine übergeordnete Komponente Daten an eine untergeordnete Komponente weitergibt. $listeners: Enthält eine Sammlung von Listener-Ereignissen im übergeordneten Bereich außer Die Nutzung ist die gleiche // Übergeordnetes Element.vue <Vorlage> <child :name="name" title="1111" ></child> </Vorlage Standard exportieren{ Daten(){ zurückkehren { Name:"Muhua" } } } // Kind.vue <Vorlage> // Mit der Übergabe an die untergeordnete Komponente fortfahren <sun-child v-bind="$attrs"></sun-child> </Vorlage> Standard exportieren{ props:["name"], // Dies kann empfangen oder nicht empfangen werden mounted(){ // Wenn die Requisiten einen Namen erhalten, ist es { title:1111 }, andernfalls ist es { name:"Muhua", title:1111 } konsole.log(dies.$attrs) } } 7. $Kinder / $Eltern $children: Holen Sie sich ein Array von // Übergeordnetes Element.vue Standard exportieren{ montiert(){ this.$children[0].someMethod() // Ruft die Methode der ersten untergeordneten Komponente auf this.$children[0].name // Ruft die Eigenschaften der ersten untergeordneten Komponente ab } } // Kind.vue Standard exportieren{ montiert(){ this.$parent.someMethod() //Rufen Sie die Methode der übergeordneten Komponente auf this.$parent.name //Holen Sie sich die Eigenschaften in der übergeordneten Komponente} } 8. bereitstellen / injizieren Bereitstellen: ermöglicht es uns, die Daten oder Methoden anzugeben, die wir den untergeordneten Komponenten bereitstellen möchten Es ist zu beachten, dass die von // Übergeordnete Komponente exportiert standardmäßig{ // Methode 1 kann die Methode in den bereitgestellten Methoden nicht abrufen: { Name:"Muhua", Alter: Eigenschaft in this.data}, // Methode 2 kann die Attribute in den Daten nicht abrufen provide(){ zurückkehren { Name:"Muhua", someMethod:this.someMethod // Methode in Methoden } }, Methoden:{ irgendeineMethode(){ console.log("Dies ist die Injektionsmethode") } } } // Abkömmling Komponente export default{ injizieren:["Name","irgendeineMethode"], montiert(){ console.log(dieser.Name) dies.someMethod() } } 9. EventBus /Methode 1: // Extrahieren Sie es in eine separate js-Datei Bus.js und importieren Sie es dann bei Bedarf // Bus.js Vue von „vue“ importieren exportiere standardmäßig neues Vue() Methode 2: Direktes Mounten auf dem globalen // Haupt.js Vue von „vue“ importieren Vue.prototype.$bus = neues Vue() Methode 3: In das Vue-Stammobjekt einfügen // Haupt.js Vue von „vue“ importieren neuer Vue({ el:"#app", Daten:{ Bus: neues Vue() } }) Die Verwendung ist wie folgt, wobei Methode 1 als Beispiel zur Einführung bei Bedarf verwendet wird // In der Komponente, die benutzerdefinierte Ereignisse nach außen senden muss <template> <button @click="handlerClick">Schaltfläche</button> </Vorlage> Bus aus "./Bus.js" importieren Standard exportieren{ Methoden:{ handlerKlick(){ // Benutzerdefinierter Ereignisname sendMsg Bus.$emit("sendMsg", "Dies sind die nach außen zu sendenden Daten") } } } // Importieren Sie den Bus aus „./Bus.js“ in die Komponente, die externe Ereignisse empfangen muss Standard exportieren{ montiert(){ // Auf Ereignisauslöser warten Bus.$on("sendMsg", data => { console.log("Dies sind die empfangenen Daten:", Daten) }) }, vorZerstören(){ //Überwachung abbrechen Bus.$off("sendMsg") } } 10. Vuex Erstellen Sie beispielsweise eine Dateistruktur wie diese Der Inhalt von index.js ist wie folgt: Vue von „vue“ importieren Vuex von „vuex“ importieren Getter aus „./getters“ importieren Aktionen aus „./actions“ importieren Mutationen aus „./mutations“ importieren Status aus „./state“ importieren Benutzer aus „./modules/user“ importieren Vue.Verwenden(Vuex) const store = neuer Vuex.Store({ Module: Benutzer }, Getter, Aktionen, Mutationen, Zustand }) Standardspeicher exportieren Importieren Sie es dann in main.js: Vue von „vue“ importieren Store aus "./store" importieren neuer Vue({ el:"#app", speichern, rendern: h => h(App) }) Dann in der erforderlichen Komponente: importiere { mapGetters, mapMutations } von "vuex" Standard exportieren{ berechnet:{ // Methode 1. Verwenden Sie dann Folgendes. Eigenschaftsname ... mapGetters (["Eigenschaft 1 von getters.js einführen", "Eigenschaft 2"]) // Methode 2 ... mapGetters("Benutzer", ["Attribut 1 im Benutzermodul", "Attribut 2"]) }, Methoden:{ // Methode 1. Verwenden Sie dann Folgendes. Eigenschaftsname ... mapMutations (["Methode 1 aus mutations.js","Methode 2"]) // Methode 2...mapMutations("user",["Methode 1 aus dem Benutzermodul","Methode 2"]) } } // Oder Sie können this.$store.state.xxx auch so abrufen dies.$store.state.user.xxx 11. $Wurzel 12. Schlitz Dabei werden die Daten der untergeordneten Komponente über den Steckplatz an die übergeordnete Komponente übergeben und anschließend wieder eingefügt. // Kind.vue <Vorlage> <div> <slot :user="Benutzer"></slot> </div> </Vorlage> Standard exportieren{ Daten(){ zurückkehren { Benutzer: { Name: "Muhua" } } } } // Übergeordnetes Element.vue <Vorlage> <div> <child v-slot="slotProps"> {{ slotProps.Benutzername }} </child> </div> </Vorlage> Damit ist dieser Artikel über 12 Arten der Komponentenkommunikation in Vue2.x abgeschlossen. Weitere relevante Inhalte zur Vue2.x-Komponentenkommunikation finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Lösung für das Problem, dass die Tomcat-Konfiguration in Intelli Idea nicht gefunden wird
>>: Bearbeiten Sie zwei Datenspalten als neue Spalten in SQL
Ob der a-Tag eine neue Seite öffnet: (1) Baidu Enc...
Beim Verwenden von Animation.css habe ich festges...
Die neueste Verpackungsschachtel für Perfect Aloe...
Inhaltsverzeichnis 1. Was ist eine Datenbank? 2. ...
Vorwort Wenn sich unser Geschäft in einem sehr fr...
Inhaltsverzeichnis Proxy-Weiterleitungsregeln Der...
Vorwort In letzter Zeit haben viele neue Kollegen...
Der „Abbrechen“-Button ist nicht Teil des notwend...
Elementform und Codeanzeige Weitere Einzelheiten ...
Vue - Implementierung der Shuttle-Box-Funktion. D...
<br />Verwandter Artikel: Analyse der Inform...
Um Als ich kürzlich Vue lernte, schrieb ich ein k...
Bei Verwendung des Tags <html:reset> stellen...
<br />Hier ergibt sich ein Widerspruch: In k...
Heute wurde ich gefragt, wozu das Zoom-Attribut i...