Zusammenfassung der zwölf Methoden der Vue-Wertübertragung

Zusammenfassung der zwölf Methoden der Vue-Wertübertragung

1. Vom Vater zum Sohn

(1) Binden Sie eine Eigenschaft an das Child-Component-Tag der Parent-Komponente und mounten Sie die zu übertragende Variable. (2) Akzeptieren Sie Daten über Props in der Child-Komponente. Props können ein Array oder ein Objekt sein. Die empfangenen Daten können direkt verwendet werden props: ["property name"] props:{property name: data type}
Codebeispiel:

//Übergeordnete Komponente <template>
  <div>
    <i>Übergeordnete Komponente</i>
    <!--Seitennutzung-->
    <son :data='Name'></son> 
  </div>
</Vorlage>

<Skript>
importiere Sohn von "./son.vue"; //Übergeordnete Komponente importieren export default {
  Komponenten: { Sohn }, //Komponentenname registrieren: "übergeordnete Komponente",
  Daten() {
    zurückkehren {
      Name: "Frazier", //übergeordnete Komponente definiert Variablen};
  },
};
</Skript>
//Unterkomponente <Vorlage>
  <div>{{Daten}}</div>
</Vorlage>

<Skript>
Standard exportieren {
Komponenten: { },
  Name: 'Unterkomponente',
  Requisiten: ["Daten"],
};
</Skript>

2. Vom Sohn zum Vater

(1) Passen Sie ein Ereignis im untergeordneten Komponenten-Tag der übergeordneten Komponente an und rufen Sie dann die erforderliche Methode auf.
(2) In der Methode der untergeordneten Komponente wird this.$emit("event") verwendet, um das in der übergeordneten Komponente definierte Ereignis auszulösen, und die Daten werden in Form von Parametern übergeben.
Codebeispiel:

//Übergeordnete Komponente <template>
  <div>
    <i>Übergeordnete Komponente</i>
    <!--Seitennutzung-->
    <son @lcclick="lcclick"></son>//Ein Ereignis anpassen</div>
</Vorlage>

<Skript>
importiere Sohn von "./son.vue"; //Übergeordnete Komponente importieren export default {
  Komponenten: { Sohn }, //Komponentenname registrieren: "übergeordnete Komponente",
  Daten() {
    zurückkehren {};
  },
  Methoden: {
    lcklick(){
      Alarm (,Sohn geht an Vater über‘)
    }
  },
};
</Skript>

//Unterkomponente <Vorlage>
  <div>
    <button @click="lcalter">Klick mich</button>
  </div>
</Vorlage>

<Skript>
Standard exportieren {
Komponenten: { },
  Name: 'Unterkomponente',
  Methoden: {
    lcalter(){
      this.$emit('lcclick')//Löse das Ereignis durch emittieren aus}
  },
};
</Skript>

3. Brother-Komponentenkommunikation (Bus)

(1) Erstellen Sie eine neue Bus.js-Datei in src und exportieren Sie eine leere Vue-Instanz
(2) Führen Sie Bus.js auf der Datenübertragungsseite ein und versenden Sie dann Ereignisse über Bus. emit („Ereignisname“, „Parameter“). Daten werden über emit („Ereignisname“, „Parameter“) versendet und Daten in Form von Parametern von emit() übertragen.
(3) Führen Sie Bus.js auf der Seite ein, die die Daten empfängt, und verwenden Sie dann Bus.$on("event name", (data) => {data is theceived data})

Bildbeispiele:

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

4. ref/refs (Kommunikation zwischen übergeordneten und untergeordneten Komponenten)

(1) Wenn ref auf einem normalen DOM-Element verwendet wird, zeigt die Referenz auf das DOM-Element. Wenn es auf einer untergeordneten Komponente verwendet wird, zeigt die Referenz auf die Komponenteninstanz.
(2) Sie können Komponentenmethoden aufrufen oder über Instanzen direkt auf Daten zugreifen. Es kann auch als eine Art Werteübertragung von der untergeordneten Komponente zur übergeordneten Komponente betrachtet werden.
Codebeispiel:

//Übergeordnete Komponente <template>
  <div>
    <button @click="sayHello">sagHallo</button>
    <child ref="childForRef"></child>
  </div>
</Vorlage>
<Skript>
Kind aus „./child.vue“ importieren
  Standard exportieren {
    Komponenten: { Kind },
    Daten () {
      zurückkehren {
        childForRef: null,
      }
    },
    montiert() {
      dies.childForRef = dies.$refs.childForRef;
      Konsole.log(dieses.childForRef.name);
    },
    Methoden: {
      sagHallo() {
        dies.childForRef.sayHello()
      }
    }
  }
</Skript>
//Unterkomponente <Vorlage>
  <div>Kinderinhalte</div>
</Vorlage>
<Skript>
Standard exportieren {
  Daten () {
    zurückkehren {
      Name: 'Ich bin ein Kind',
    }
  },
  Methoden: {
    sagHallo() {
      console.log('hallo');
      Alarm ('Hallo');
    }
  }
}
</Skript>

5. Vuex-Kommunikation

Komponenten werden an Aktionen gesendet, bei denen es sich um asynchrone Vorgänge handelt. Aktionen führen zu Mutationen, die den Status durch logische Vorgänge ändern und dadurch eine Synchronisierung mit Komponenten und eine Aktualisierung ihres Datenstatus durchführen.
Codebeispiel:

//Vorlage für übergeordnete Komponente>
  <div id="app">
    <KindA/>
    <KindB/>
  </div>
</Vorlage>
<Skript>
  importiere ChildA von './ChildA' // Komponente A importieren importiere ChildB von './ChildB' // Komponente B importieren export default {
    Komponenten: {ChildA, ChildB} // Komponenten registrieren}
</Skript>
//Unterkomponente A
<Vorlage>
 <div id="KindA">
   <h1>Ich bin Komponente A</h1>
   <button @click="transform">Klicken Sie hier, damit Komponente B Daten empfängt</button>
   <p>Da auf B geklickt wurde, hat sich die Nachricht geändert: {{BMessage}}</p>
 </div>
</Vorlage>
<Skript>
 Standard exportieren {
   Daten() {
     zurückkehren {
       Eine Nachricht: „Hallo Komponente B, ich bin Komponente A“
     }
   },
   berechnet: {
     BMessage() {
       // Speichere hier die aus dem Store erhaltenen Daten von Komponente B. returniere this.$store.state.BMsg
     }
   },
   Methoden: {
     transformieren() {
       // receiveAMsg auslösen und die Daten der Komponente A im Store speichern this.$store.commit('receiveAMsg', {
         AMsg: diese.AMessage
       })
     }
   }
 }
</Skript>
//Unterkomponente B
<Vorlage>
 <div id="KindB">
   <h1>Ich bin Komponente B</h1>
   <button @click="transform">Klicken Sie hier, damit Komponente A Daten empfängt</button>
   <p>Klicken Sie auf A, meine Nachricht ändert sich: {{AMessage}}</p>
 </div>
</Vorlage>

<Skript>
 Standard exportieren {
   Daten() {
     zurückkehren {
       BMessage: „Hallo Komponente A, ich bin Komponente B“
     }
   },
   berechnet: {
     EineNachricht() {
       // Hier speichern wir die aus dem Store erhaltenen Daten der Komponente A. return this.$store.state.AMsg
     }
   },
   Methoden: {
     transformieren() {
       // receiveBMsg auslösen und die Daten der Komponente B im Store speichern this.$store.commit('receiveBMsg', {
         BMsg: diese.BMessage
       })
     }
   }
 }
</Skript>

// vuex
Vue von „vue“ importieren
 Vuex von „vuex“ importieren
 Vue.Verwenden(Vuex)
 konstanter Zustand = {
   AMsg: '',
   BMsg: ''
 }
 
 const Mutationen = {
   receiveAMsg(Zustand, Nutzlast) {
     //Speichere die Daten der Komponente A im Zustand
     Zustand.AMsg = Nutzlast.AMsg
   },
   receiveBMsg(Zustand, Nutzlast) {
     //Speichere die Daten der Komponente B im Zustand
     Zustand.BMsg = Nutzlast.BMsg
   }
 }
 
 exportiere standardmäßig neuen Vuex.Store({
   Zustand,
   Mutationen
 })

6. $Eltern

Übergeordnet kann die Instanz der übergeordneten Komponente abgerufen werden. Über diese Instanz können dann die Eigenschaften und Methoden der übergeordneten Komponente abgerufen werden. Es gibt auch einen übergeordneten Bruder, der die Instanz der übergeordneten Komponente abrufen kann. Über diese Instanz können dann die Eigenschaften und Methoden der übergeordneten Komponente abgerufen werden. Es gibt auch einen übergeordneten Bruder, der die Instanz der übergeordneten Komponente abrufen kann. Über diese Instanz können dann die Eigenschaften und Methoden der übergeordneten Komponente abgerufen werden. Es gibt auch einen übergeordneten Bruder, der die Instanz der Stammkomponente abrufen kann.
Codebeispiel:

// Daten der übergeordneten Komponente abrufen this.$parent.foo

// Daten in die übergeordnete Komponente schreiben this.$parent.foo = 2

// Zugriff auf die berechnete Eigenschaft this.$parent.bar der übergeordneten Komponente

//Rufen Sie die Methode der übergeordneten Komponente this.$parent.baz() auf.

//Im Beispiel der Übergabe einer untergeordneten Komponente an eine übergeordnete Komponente können Sie this.$parent.getNum(100) verwenden, um den Wert an die übergeordnete Komponente zu übergeben.

7.sessionStorage-Wertübertragung

SessionStorage ist ein globales Objekt des Browsers und die darin gespeicherten Daten werden beim Schließen der Seite gelöscht. Mit dieser Funktion können wir eine Kopie der Daten auf allen Seiten teilen.
Codebeispiel:

// Daten im SessionStorage speichern
sessionStorage.setItem('Schlüssel', 'Wert');

// Daten aus SessionStorage abrufen let data = sessionStorage.getItem('key');

// Gespeicherte Daten aus SessionStorage löschen sessionStorage.removeItem('key');

// Alle gespeicherten Daten aus sessionStorage löschen sessionStorage.clear();

Hinweis: Darin werden Schlüssel-Wert-Paare gespeichert, die nur Zeichenfolgentypen sein können. Wenn Sie Objekte speichern möchten, müssen Sie let objStr = JSON.stringify(obj) verwenden, um sie in eine Zeichenfolge umzuwandeln und dann zu speichern (wenn Sie let obj = JSON.parse(objStr) verwenden, um sie in ein Objekt zu analysieren).
Ich empfehle eine Bibliothek namens „good-storage“, die sessionStorage kapselt und Ihnen ermöglicht, ihre API direkt zum Speichern von Objekten zu verwenden.

//lokaler Speicher
 storage.set(Schlüssel,Wert) 
 storage.get(Schlüssel, def)
//Sitzungsspeicher
 storage.session.set(Schlüssel, Wert)
 storage.session.get(Schlüssel, Wert)

8. Routing-Wert

Verwenden Sie ein Fragezeichen, um den Wert zu übergeben
Wenn Seite A zu Seite B springt, verwenden Sie dies. router.push('/B?name = danseek') Seite B kann dies verwenden. router.push('/B?name=danseek') Seite B kann dies verwenden. router.push('/B?name=danseek') Seite B kann dies.route.query.name verwenden, um den von Seite A übergebenen Wert abzurufen. Beachten Sie den Unterschied zwischen Router und Route oben.
Verwenden Sie einen Doppelpunkt, um den Wert zu übergeben <br /> Konfigurieren Sie die folgende Route:

{
    Pfad: '/b/:name',
    Name: 'b',
    Komponente: () => import( '../views/B.vue')
 },

Auf Seite B können Sie this.$route.params.name verwenden, um den Wert des von der Route übergebenen Namens abzurufen.

Verwenden Sie die übergeordnete und untergeordnete Komponente, um den Wert zu übergeben. Da die Router-Ansicht selbst auch eine Komponente ist, können wir auch die übergeordnete und untergeordnete Komponente verwenden, um den Wert zu übergeben, und dann der entsprechenden untergeordneten Seite Requisiten hinzufügen. Da die Route nach der Aktualisierung des Typs nicht aktualisiert wird, kann der neueste Typwert nicht direkt im montierten Hook der untergeordneten Seite abgerufen werden, sondern es wird watch verwendet

<router-view :type="Typ"></router-view>

// Unterseiten-Eigenschaften: ['Typ']
betrachten:
       Typ(){
           // console.log("Mit dieser Methode können Sie immer die aktuellsten Daten abrufen: type=", this.type)
       },
},

9. Enkel des Vorfahren $attrs

Unter normalen Umständen müssen Sie die Requisiten des Vaters als Zwischenübergang verwenden. Auf diese Weise verfügt die Vaterkomponente jedoch über mehr Attribute, die nicht mit dem Geschäft der übergeordneten Komponente zusammenhängen, und die Kopplung ist hoch. Mithilfe von $attrs kann dies vereinfacht werden, und weder das Großelternteil noch das Enkelkind müssen geändert werden.
Vorgängerkomponente:

<Vorlage>
    <Abschnitt>
        <parent name="grandParent" sex="男" age="88" hobby="code" @sayKnow="sayKnow"></parent>
    </Abschnitt>
</Vorlage>

<Skript>
    importiere Parent von './Parent'
    Standard exportieren {
        Name: „Großeltern“,
        Komponenten:
          Elternteil
        },
        Daten() {
            zurückkehren {}
        },
        Methoden: {
          sagWissen(Wert){
            console.log(Wert)
          }
        },
        montiert() {
        }
    }
</Skript>

Übergeordnete Komponente

<Vorlage>
  <Abschnitt>
    <p>Die übergeordnete Komponente empfängt</p>
    <p>Name des Großvaters: {{name}}</p>
    <Kinder v-bind="$attrs" v-on="$listeners"></Kinder>
  </Abschnitt>
</Vorlage>

<Skript>
  Kinder aus './Children' importieren

  Standard exportieren {
    Name: "Übergeordnet",
    Komponenten:
      Kinder
    },
    // Die übergeordnete Komponente erhält den Namen, daher wird der Namenswert nicht an die Eigenschaften der untergeordneten Komponente weitergegeben: ['name'],
    Daten() {
      zurückkehren {}
    },
    Methoden: {},
    montiert() {
    }
  }
</Skript>

Unterkomponenten

<Vorlage>
  <Abschnitt>
    <p>Unterkomponente empfangen</p>
    <p>Name des Großvaters: {{name}}</p>
    <p>Geschlecht des Großvaters: {{sex}}</p>
    <p>Alter des Großvaters: {{age}}</p>
    <p>Großvaters Hobby: {{hobby}}</p>

    <button @click="sayKnow">Ich weiß</button>
  </Abschnitt>
</Vorlage>

<Skript>
  Standard exportieren {
    Name: "Kinder",
    Komponenten: {},
    // Da die übergeordnete Komponente das Namensattribut erhalten hat, wird der Name nicht an die untergeordnete Komponente weitergegeben props:['sex','age','hobby','name'],
    Daten() {
      zurückkehren {}
    },
    Methoden: {
      sagWissen(){
        dies.$emit('sayKnow','Ich weiß')
      }
    },
    montiert() {
    }
  }
</Skript>

10. Sun Chuanzu verwendet $listeners

Das Gleiche wie der neunte

Vorgängerkomponenten

<Vorlage>
  <div id="app">
    <Kinder-Eins @eventOne="eventOne"></Kinder-Eins>
    {{ msg }}
  </div>
</Vorlage>
<Skript>
importiere ChildrenOne aus '../src/components/children.vue'
Standard exportieren {
  Name: "App",
  Komponenten:
    KinderEins,
  },
  Daten() {
    zurückkehren {
      Nachricht: ''
    }
  },
  Methoden: {
    eventOne(Wert) {
      this.msg = Wert
    }
  }
}
</Skript>

Übergeordnete Komponente

<Vorlage>
  <div>
    <Kinder-Zwei v-on="$listeners"></Kinder-Zwei>
  </div>
</Vorlage>

<Skript>
importiere ChildrenTwo aus './childrenTwo.vue'

Standard exportieren {
  Name: 'childrenOne',
  Komponenten:
    KinderZwei
  }
}
</Skript>

Unterkomponenten

<Vorlage>
  <div>
    <button @click="setMsg">Klicken, um an Großvater weiterzugeben</button>
  </div>
</Vorlage>

<Skript>
Standard exportieren {
  Name: 'Kinder',
  Methoden: {
    setMsg() {
      dies.$emit('eventOne', '123')
    }
  }
}
</Skript>

11. Promise-Parameterübergabe

So übergeben Sie mehrere Parameter in der Promise-Auflösung

//Ähnlich wie diese Verwendung, aber tatsächlich können die letzten beiden Parameter nicht erhalten werden promise = new Promise((resolve,reject)=>{
    sei a = 1
    sei b = 2
    sei c = 3
    auflösen(a,b,c) 
})
versprechen.dann((a,b,c)=>{
    konsole.log(a,b,c)
})

resolve() kann nur einen Parameter akzeptieren und verarbeiten, und alle zusätzlichen Parameter werden ignoriert.
Wenn Sie mehrere möchten, verwenden Sie ein Array oder Objekt. .
Arrays

Versprechen = neues Versprechen((lösen, ablehnen)=>{
    auflösen([1,2,3]) 
})
versprechen.dann((arr)=>{
    konsole.log(arr[0],arr[1],arr[2])
})

Objekt

Versprechen = neues Versprechen((lösen, ablehnen)=>{
    lösen({a:1,b:2,c:3}) 
})
versprechen.dann(obj=>{
    konsole.log(Objekt.a,Objekt.b,Objekt.c)
})

12. Globale Variablen

Definieren Sie eine globale Variable, weisen Sie der Komponente mit einem Wert direkt einen Wert zu und verwenden Sie ihn direkt in der erforderlichen Komponente. Weitere Einzelheiten finden Sie in meinem Blog.
Klicken Sie einfach auf den Blog-Link Globale Variablen

Damit ist dieser Artikel über die zwölf Methoden der Vue-Wertübertragung abgeschlossen. Weitere Informationen zur Vue-Wertübertragung finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Mehrere Wertübertragungsmethoden in Vue (3 Typen)
  • Detaillierte Erklärung, wie Vue-Komponenten Werte untereinander übertragen
  • Lösung für das Vue-Datenzuweisungsproblem
  • Probleme bei der Wertübergabe und -zuweisung in Vue

<<:  Detaillierte Erläuterung der Systemeingabe- und -ausgabeverwaltung in Linux

>>:  Detailliertes Tutorial zur Installation von MySQL 5.7.20 auf RedHat 6.5/CentOS 6.5

Artikel empfehlen

TypeScript-Dekorator-Definition

Inhaltsverzeichnis 1. Konzept 1.1 Definition 1.2 ...

Vier Lösungen für die Verwendung von setTimeout in JS for-Schleifen

Inhaltsverzeichnis Überblick Lösung 1: Verschlüss...

Detaillierte Erklärung der Anwendungsfälle von Vue-Listenern

Die erste Möglichkeit besteht darin, jQuery's...

Analyse von MySQL-Lock-Wait- und Deadlock-Problemen

Inhaltsverzeichnis Vorwort: 1. Verstehen Sie Lock...

Einige Hinweise zur MySQL-Self-Join-Deduplizierung

Lassen Sie mich kurz das Funktionsszenario erklär...

Vergleich der Vorteile von vue3 und vue2

Inhaltsverzeichnis Vorteil 1: Optimierung des Dif...

Zabbix-Konfiguration DingTalk-Alarmfunktions-Implementierungscode

brauchen Das Konfigurieren von DingTalk-Alarmen i...

Tomcat verwendet Thread-Pool zur Verarbeitung gleichzeitiger Remote-Anfragen

Wenn wir verstehen, wie Tomcat gleichzeitige Anfr...

Mehrere gängige Methoden zum Festlegen der Ankerpositionierung in HTML

Mir sind mehrere Möglichkeiten bekannt, die Ankerp...

JavaScript zum Erzielen eines elastischen Navigationseffekts

In diesem Artikel wird der spezifische Code für J...