Lassen Sie uns zunächst darüber sprechen, warum wir Provide/Inject verwenden. Für die Kommunikation zwischen Großvater- und Enkelkomponenten oder sogar zwischen Urgroßvater- und Enkelkomponenten können wir einfach vuex verwenden. Das ist tatsächlich der Fall, aber bitte hören Sie mir zu, manchmal ist Ihr Projekt relativ klein und es gibt sogar nur wenige Szenarien für die Komponentenkommunikation. Ist es in diesem Fall nicht Verschwendung, Vuex nur für einige Kommunikationsparameter einzuführen? Manche Leute denken vielleicht auch daran, Ohne weitere Umschweife möchte ich Ihnen nur sagen, dass die Verwendung von Provide/Inject die Lösung für Ihre Probleme ist. Mal sehen, wie man es verwendet. Backhand besteht nur aus ein paar Zeilen einfachem Code: 1. Die übergeordnete Komponente stellt die Parameter bereit, die an die untergeordnete Komponente übergeben werden sollen provide() { zurückkehren { Listentyp: dieser.Listentyp, } } 2. Verwendung von Unterkomponenten: einfügen: ['Listentyp'], Natürlich kannst du auch in inject deine Standardwerte und die Quelle deiner Parameter angeben: injizieren:{ Listentyp: { von: „par“ // geben Sie den definierten Namen an Standard: 1 } } Okay! Ist es nicht einfach? Tatsächlich können sowohl übergeordnete als auch Vorgängerkomponenten Abhängigkeiten in untergeordnete Komponenten einfügen, unabhängig davon, wie tief die Komponentenhierarchie ist. Noch mehr: provide kann ein Objekt oder eine Funktion sein, die ein Objekt zurückgibt. inejct: kann ein Zeichenfolgenarray oder ein Objekt sein. Wenn Sie interessiert sind, schauen Sie sich den Quellcode unten an, der auch recht einfach zu verstehen ist: Geben Sie den Kernquellcode an: Exportfunktion bereitstellen<T>(Schlüssel: InjectionKey<T> | Zeichenfolge | Zahl, Wert: T) { wenn (!aktuelleInstanz) { wenn (__DEV__) { warnen(`provide() kann nur innerhalb von setup() verwendet werden.`) } } anders { //Holen Sie sich die Provides der aktuellen Komponente. Die Standardinstanz erbt das Provides-Objekt der übergeordneten Klasse. let provides = currentInstance.provides //Verwenden Sie das übergeordnete bereitgestellte Objekt als Prototyp, um Ihr eigenes bereitgestelltes Objekt zu erstellen const parentProvides = currentInstance.parent und currentInstance.parent.provides wenn (parentProvides === bietet) { bietet = aktuelleInstanz.bietet = Objekt.erstellen(übergeordnetesAngebot) } liefert [Schlüssel als Zeichenfolge] = Wert } } Kernquellcode von Inject: Exportfunktion injizieren ( Schlüssel: InjectionKey<beliebig> | Zeichenfolge, Standardwert?: unbekannt, TreatDefaultAsFactory = falsch ) { //Aktuelle Komponenteninstanz abrufen const instance = currentInstance || currentRenderingInstance wenn (Instanz) { //Get bietet const bietet = Instanz.übergeordnet == null ? Instanz.vnode.appContext und Instanz.vnode.appContext.provides : Instanz.übergeordnetes Element.bietet if (bietet && (Schlüssel als Zeichenfolge | Symbol) in bietet) { //Wenn der Schlüssel existiert, liefert die Rückgabe direkt [Schlüssel als String] } sonst wenn (Argumente.Länge > 1) { //Wenn der Schlüssel nicht existiert, legen Sie den Standardwert fest und geben Sie den Standardwert direkt zurück return TreatDefaultAsFactory && isFunction(defaultValue) ? Standardwert.Aufruf(Instanz.Proxy) : Standardwert } sonst wenn (__DEV__) { //Wenn keines davon gefunden wird, warne(`injection "${String(key)}" nicht gefunden.`) } } sonst wenn (__DEV__) { warnen(`inject() kann nur innerhalb von setup() oder funktionalen Komponenten verwendet werden.`) } } Damit ist dieser Artikel über die Analyse der Verwendung und Prinzipien von Vues Provide und Inject abgeschlossen. Weitere Informationen zur Verwendung von Vue Provide und Inject 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:
|
<<: Beispielcode für HTML-Framesets
>>: Beispielcode zur Implementierung einer Kreisbahnanimation mit CSS3 und Tabellen-Tags
Sie wissen, dass der Browser ohne diese Option bei...
XML/HTML-CodeInhalt in die Zwischenablage kopiere...
Hier sind die Arten von Daten, die überprüft werd...
Der CSS-Implementierungscode zum Festlegen des Bi...
Lassen Sie uns ohne weitere Umschweife mit den Re...
<br />Im Allgemeinen ist die Dateiorganisati...
Dieser Artikel beschreibt, wie Sie MySQL zum Expo...
Die Ausführungsbeziehung zwischen dem href-Sprung...
1 Umsetzungsprinzip Dies geschieht mithilfe der E...
In diesem Artikel wird der spezifische Code für J...
1. Wenn im Internet Explorer die relative Position...
Ich war in einer Besprechung, als ein Kollege anr...
1.1 Allgemeine Kennzeichnung Ein allgemeines Tag ...
Ich wusste vorher, dass man await verwenden muss,...
Inhaltsverzeichnis A. Docker-Bereitstellung des S...