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)
In diesem Artikelbeispiel wird der spezifische Co...
Wenn ich beispielsweise einen Jenkins-Server in m...
In tatsächlichen Projekten muss die Datenbank reg...
Fehler: Connection to blog0@localhost failed. [08...
Einleitung Bisher wurden unsere Docker-Images in ...
Inhaltsverzeichnis Vorwort Asynchrones Laden Pake...
Einführung: Manchmal müssen wir zur Entwicklung e...
Vorwort Bei der Arbeit muss ich jede Woche die vo...
Das HTML-Spezifikationsdokument führt das Crossor...
Das Installationstutorial der komprimierten Versi...
Code kopieren Der Code lautet wie folgt: <html...
Vue-Version, kopiere sie in die Datei und verwend...
Inhaltsverzeichnis 1. Betrieb von js Integer 2. S...
Inhaltsverzeichnis Controllertyp von k8s Beziehun...
Code: <input Typ="text" Klasse="...