Vorwort: Beim Übergeben von Daten zwischen übergeordneten und untergeordneten Komponenten werden normalerweise Props und Emitt verwendet. Beim Übergeben von Daten von übergeordneten an untergeordnete Komponenten werden Props verwendet. Wenn die übergeordnete Komponente sie an die untergeordnete Komponente übergibt, müssen sie zuerst an die untergeordnete Komponente übergeben werden, und dann übergibt die untergeordnete Komponente sie an die untergeordnete Komponente. Wenn mehrere untergeordnete Komponenten oder mehrere untergeordnete Komponenten verwendet werden, müssen sie viele Male übergeben werden, was sehr problematisch sein wird. In solchen Fällen können Sie 1. Verwendung von provide / inject in Vue2provide: ist ein Objekt, das Eigenschaften und Werte enthält. wie: bieten:{ info:"Wert" } Wenn bieten(){ zurückkehren { Info: diese.msg } } einfügen: [ 'info' ] Empfängt die von provide oben bereitgestellten Infodaten, die auch ein Objekt mit from- und default-Attributen sein können. From ist der Schlüssel, der zum Suchen im eingefügten Inhalt verwendet wird, und das default-Attribut dient zum Angeben des Standardwerts. Im Vue2-Projekt/Inject-Anwendung: //Übergeordnete Komponente exportiert standardmäßig{ bieten:{ info:"Daten bereitstellen" } } //Unterkomponente Export Standard{ injizieren:['info'], montiert(){ console.log("Daten empfangen:", this.info) // Daten empfangen: Daten bereitstellen} } 2. Verwendung von provide / inject in Vue3 Verwenden Sie Die Provide-Funktion erhält zwei Parameter:
Bei Verwendung von: importiere { biete } von "vue" Standard exportieren { aufstellen(){ bereitstellen('Info',"Wert") } } Die Injektionsfunktion verwendet zwei Parameter:
Bei Verwendung von: importiere { inject } von "vue" Standard exportieren { aufstellen(){ inject('info',"Standardwert festlegen") } } Vollständiges Beispiel 1 : Beispiel //Code der übergeordneten Komponente <script> importiere { biete } von "vue" Standard exportieren { aufstellen(){ bereitstellen('Info',"Wert") } } </Skript> //Unterkomponentencode <Vorlage> {{Info}} </Vorlage> <Skript> importiere { inject } von "vue" Standard exportieren { aufstellen(){ const info = injizieren('info') zurückkehren { Info } } } </Skript> 3. Reagieren Sie schneller Um Vollständiges Beispiel 2 : Responsive //Code der übergeordneten Komponente <template> <div> Die Info: {{info}} <InjectCom ></InjectCom> </div> </Vorlage> <Skript> importiere InjectCom aus "./InjectCom" importiere { provide, readonly, ref } von "vue" Standard exportieren { aufstellen(){ let info = ref("Hast du heute gelernt?") setzeTimeout(()=>{ info.value = "Suchen Sie keine Ausreden, fangen Sie jetzt an zu lernen" },2000) bereitstellen('Info',Info) zurückkehren { Info } }, Komponenten: { InjectCom } } </Skript> // InjectCom-Unterkomponentencode <template> {{Info}} </Vorlage> <Skript> importiere { inject } von "vue" Standard exportieren { aufstellen(){ const info = injizieren('info') setzeTimeout(()=>{ info.value = "Aktualisieren" },2000) zurückkehren { Info } } } </Skript> Im obigen Beispiel wird der Wenn Sie den Wert in der Abonnementkomponente ändern, kann er normal geändert werden. Wenn andere Komponenten den Wert ebenfalls verwenden, kann es zu einer Statusverwechslung kommen. Daher ist es notwendig, das Problem an der Quelle zu vermeiden. Anwendung: importiere { schreibgeschützt } von "vue" let info = readonly('Nur-Lese-Infowert') setTimout(()=>{ info="Update info" //Aktualisiere den Wert von info nach zwei Sekunden},2000) Nach einer Laufzeit von zwei Sekunden gibt der Browser eine Warnung aus, dass der Infowert nicht geändert werden kann. Daher fügen wir den vom Fügen Sie „readonly“ hinzu, um es im vollständigen Beispiel 2 bereitzustellen. bereitstellen('Info', schreibgeschützt(Info)) Wenn eine Unterkomponente den Wert ändert, wird eine schreibgeschützte Erinnerung ausgegeben. Wenn Sie den Wert ändern, müssen Sie weiterhin die Daten in der Komponente ändern, die die veröffentlichten Daten wie: //Veröffentlichen let info = ref("Hast du heute gelernt?") const changeInfo = (Wert)=>{ info.Wert = Wert } bereitstellen('Info',schreibgeschützt(Info)) bereitstellen('changeInfo',changeInfo) //Abonnement const chang = inject('changeInfo') ändern (,,Eile zum Frontend-Ingenieur') Vollständiges Beispiel 3: Daten ändern
// Code der übergeordneten Komponente <template>
<div>
Die Info: {{info}}
<InjectCom ></InjectCom>
</div>
</Vorlage>
<Skript>
importiere InjectCom aus "./InjectCom"
importiere { provide, readonly, ref } von "vue"
Standard exportieren {
aufstellen(){
let info = ref("Hast du heute gelernt?")
const changeInfo = (Wert)=>{
info.Wert = Wert
}
bereitstellen('Info',schreibgeschützt(Info))
bereitstellen('changeInfo',changeInfo)
zurückkehren {
Info
}
},
Komponenten: {
InjectCom
}
}
</Skript>
//InjectCom-Unterkomponentencode <Vorlage>
<div>
<button @click="chang('Zum Frontend-Ingenieur eilen')">Wert aktualisieren</button>
</div>
</Vorlage>
<Skript>
importiere { inject } von "vue"
Standard exportieren {
aufstellen(){
const info = injizieren('info')
const chang = inject('changeInfo')
zurückkehren {
Info,
Ändern
}
}
}
</Skript>
Dies ist das Ende dieses Artikels über die Verwendung und Prinzipien von Das könnte Sie auch interessieren:
|
<<: CSS-Ansichtsfenstereinheiten für schnelles Layout
>>: So erstellen Sie ein stilvolles Webseiten-Design (Grafik-Tutorial)
1. Optimierung häufig verwendeter HTML-Tags HTML ...
Die neueste Verpackungsschachtel für Perfect Aloe...
Inhaltsverzeichnis 1. Daten vorbereiten Erstellen...
Inhaltsverzeichnis 1. HTTP-Bereichsanforderung 1....
Inhaltsverzeichnis erklären: Zusammenfassen Auffü...
In gewöhnlichen Projekten stoße ich häufig auf di...
Das Div-Element wird verwendet, um Struktur und Hi...
Inhaltsverzeichnis Vorwort Frage Prinzip prüfen V...
0. Vorbereitende Maßnahmen Deaktivieren Sie den s...
<!doctype html> <html xmlns="http:/...
Vorwort: Die vollständige Kapselung eines Funktio...
Einführung: Manchmal müssen wir zur Entwicklung e...
Das Definieren des Datenfeldtyps in MySQL ist für...
Gespeicherte Prozeduren und Codierung Wenn in ges...
Das Wesen einer flachen Website-Struktur liegt in...