Die Werteübertragung von nicht über- und untergeordneten Komponenten in vue2 erfolgt hauptsächlich über den Ereignisbus. Dabei wird eine Vue-Instanz erstellt und das Kommunikationsverhalten zwischen nicht über- und untergeordneten Komponenten durch Importieren der Instanz in verschiedene Komponenten implementiert. Vue3 bietet die Eigenschaften **provide** und **inject**, die eine Kommunikation zwischen nicht über- und untergeordneten Komponenten ermöglichen. Angenommen, es gibt drei Komponenten: App.vue (übergeordnet), sub1 (untergeordnet), sub2 (untergeordnet von untergeordnet): App.vue<Vorlage> <div Stil="border: 1px durchgehend rosa"> <h1>Ich bin dein Vater</h1> 👇 <sub1/> </div> </Vorlage> <Skript> importiere sub1 aus './sub1' Standard exportieren { Name: "App", Komponenten: { unter1, }, provide:{ // Definieren Sie provide in der übergeordneten Komponente, um den zu übergebenden Wert zu deklarieren names:['peanut','javascriptKing'] } } </Skript> <Stilbereich> </Stil> sub1.vue<Vorlage> <h2>Ich bin eine untergeordnete Komponente der ersten Ebene</h2> 👇 <sub2/> </Vorlage> <Skript> importiere sub2 aus "./sub2"; Standard exportieren { Name: "sub1", Komponenten: { unter2, } } </Skript> <Stilbereich> </Stil> sub2.vue<Vorlage> <h3>Ich bin der Jüngste, der Enkel</h3> <div>Ich habe auf das Namensarray der Komponente der obersten Ebene verwiesen ===> {{names}}</div> </Vorlage> <Skript> Standard exportieren { Name: "sub2", // Akzeptieren Sie einen ebenenübergreifenden Wert in der untergeordneten Komponente durch inject:['names'], } </Skript> <Stilbereich> </Stil> Der Implementierungseffekt ist wie folgt. Sie können sehen, dass der an die Komponente der obersten Ebene übergebene Wert normal abgerufen werden kann: Es gibt aber auch Probleme: Das heißt: Wie können wir dafür sorgen, dass die Komponente der obersten Ebene reagiert, wenn sich der Wert ändert, den sie übergeben möchte? Wie erhält man dadurch die aktuelle Instanz in der Provide-Eigenschaft? Hier müssen Sie das Provide-Attribut als Methode schreiben und ein Array oder Objekt zurückgeben: <Vorlage> <div Stil="border: 1px durchgehend rosa"> <h1>Ich bin dein Vater</h1> 👇 <sub1/> </div> </Vorlage> <Skript> importiere sub1 aus './sub1' Standard exportieren { Name: "App", Daten(){ zurückkehren { Namen: ['Erdnuss', 'JavascriptKing'] } }, Komponenten: { unter1, }, /*Wenn Sie es so schreiben, erhalten Sie dies nicht. Dies bedeutet derzeit nur, dass der Umfang im Skript nicht definiert ist*/ /*bieten:{ diese.namen, }*/ // Sollte so geschrieben werden provide(){ zurückkehren { Namen:diese.namen } } } </Skript> <Stilbereich> </Stil> Obwohl wir, wie oben geschrieben, die Daten unter der Instanz abrufen können, auf die hier verwiesen wird, stellt sich die Frage, wie wir eine Abhängigkeit zwischen ihnen herstellen und Reaktionsfähigkeit erreichen können. Dazu müssen wir folgende Änderungen an App.vue vornehmen: <Vorlage> <div Stil="border: 1px durchgehend rosa"> <h1>Ich bin dein Vater</h1> 👇 <sub1/> </div> </Vorlage> <Skript> importiere sub1 aus './sub1' importiere {berechnet} von 'vue' Standard exportieren { Name: "App", Daten(){ zurückkehren { Namen: ['Erdnuss', 'JavascriptKing'] } }, Komponenten: { unter1, }, /*Wenn Sie es so schreiben, erhalten Sie dies nicht. Dies bedeutet derzeit nur, dass der Umfang im Skript nicht definiert ist*/ /*bieten:{ diese.namen, }*/ // Sollte so geschrieben werden provide(){ zurückkehren { names:computed(() =>{ this.names.length }) // Verwende die berechnete Eigenschaft, um die Variable zurückzugeben, sodass zwischen den Namen und den Namen in den Daten eine Abhängigkeitsbeziehung besteht} }, montiert() { setzeIntervall(()=>{ dies.names.push('Vue King!') },1000) } } </Skript> <Stilbereich> </Stil> ZusammenfassenDieser Artikel endet hier. Ich hoffe, er kann Ihnen helfen. Ich hoffe auch, dass Sie mehr Inhalt auf 123WORDPRESS.COM lesen können! Das könnte Sie auch interessieren:
|
<<: Lösen Sie schnell das Problem des langsamen und hängenden Öffnens von input[type=file]
Erstellen Sie einen MySQL-Benutzer und autorisier...
W3Cschool erklärt es so Das <meta>-Element l...
Vorwort Ich glaube, die meisten Leute haben MySQL...
Der Redakteur wollte vor Kurzem mit dem macOS-Sys...
In diesem Artikel werden MySQL-Duplikatsindizes u...
Aus Hardwaregründen kann es vorkommen, dass die M...
1. Datenbanken und Datenbankinstanzen Beim Studiu...
Inhaltsverzeichnis 1. Was ist Curry 2. Verwendung...
Inhaltsverzeichnis 1. Drei Funktionen der toStrin...
Inhaltsverzeichnis Vorwort Was sind dynamische Ei...
Heutige Aufgaben 1. Wahl der Linux-Distribution 2...
Vorwort Obwohl manche Liebe auf dieser Welt ihren...
I. Einleitung Lassen Sie mich zunächst die MySQL-...
Standortabgleichsreihenfolge 1. Übereinstimmung m...
<br />Die Kopfzeile bezieht sich auf die ers...