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]
Problem: Der Überlauf der Auto-Increment-ID in ei...
Vorwort Wenn sich unser Geschäft in einem sehr fr...
Vorwort Diese Prinzipien sind aus tatsächlichen K...
Dieser Artikel verwendet ein jQuery-Plugin, um ei...
Obwohl wir keine professionellen DBAs sind, könne...
Was ist hohe Parallelität? Die standardmäßigen Li...
Beim Erstellen eines Zeitfelds STANDARD CURRENT_T...
1. Die Bedeutung von Webstandards verstehen - War...
Methode 1: Verwenden Sie Tabellenattribute: Heade...
Der Kern ist mysqldump und Runtime Der Vorgang is...
Inhaltsverzeichnis Asynchrones Durchlaufen Asynch...
Vorwort Ich habe vor Kurzem meine bisherigen Noti...
Bei der Entwicklung von Web-Frontends entwerfen U...
Nginx verwendet eine feste Anzahl von Multiprozes...
Inhaltsverzeichnis 1 Redis-Konfigurationsdatei 2 ...