Vorwort: Manchmal gehört ein Teil der Vorlage einer Komponente logisch zu dieser Komponente, aber aus technischer Sicht wäre es besser, diesen Teil der Vorlage an eine andere Stelle im Szenariobeispiel: Eine Der Speicherort der Geschäftslogik dieses modalen Dialogfelds gehört definitiv zu dieser Dies führt zu einem Problem: Der logische Speicherort der Komponente ist nicht derselbe wie Gemäß der bisherigen 1. Teleport-NutzungDie Verwendung ist sehr einfach. Sie müssen nur das to-Attribut verwenden, um die Komponente an die gewünschte Position zu rendern. // Zum Body-Tag rendern <teleport to="body"> <div Klasse="modal"> Ich bin ein teleportierter Modal! </div> </teleportieren> Sie können auch Folgendes verwenden: <teleportiere zu="#some-id" /> <teleportieren zu=".some-class" /> <teleportieren nach="[data-teleport]" /> Muss ein gültiger Abfrageselektor oder weiter 2. Vervollständigen Sie die modale DialogkomponenteLassen Sie uns nun ein standardmäßiges modales Dialogfeld kapseln <Vorlage> <teleportieren zu="body"> <Übergangsname="Dialog-Überblendung"> <div Klasse="dialog-wrapper" v-show="sichtbar"> <div Klasse="Dialog"> <div Klasse="Dialog-Header"> <slot name="Titel"> <span class="dialog-title"> {{ Titel }} </span> </slot> </div> <div Klasse="Dialog-Body"> <Steckplatz></Steckplatz> </div> <div Klasse="dialog-footer"> <slot name="Fußzeile"> <button @click="onClose">Schließen</button> </slot> </div> </div> </div> </Übergang> </teleportieren> </Vorlage> <Skript> importiere { defineComponent } von „vue“; exportiere StandarddefiniereKomponente({ Name: "tdialog" }); </Skript> <Skript-Setup> const props = defineProps({ Titel: String, sichtbar: Boolean }); const emit = defineEmits(['schließen']); const onClose = () => { emittieren('schließen'); }; </Skript> Bei der Verwendung nur <t-dialog title="LGD ist unbesiegbar" :visible="visible" @close="onClose"> Dies ist ein Inhalt, Xiaose Xianbei. </t-dialog> // ... const sichtbar = ref(false); const onDialog = () => { sichtbarer.Wert = !sichtbarer.Wert; }; const onClose = () => { sichtbarer Wert = falsch; }; Einen Schritt weiter gehen 3. Komponenten-Rendering Wir haben oben die standardmäßige modale Dialogkomponente fertiggestellt. Es gibt eine weitere ähnliche, leichtgewichtige Eingabeaufforderungskomponente namens In den obigen Beispielen schreiben wir die // Rufen Sie eine Eingabeaufforderung auf Message({ message: 'Dies ist eine Nachricht' }); Wenn wir eine Funktion zum Aufrufen verwenden möchten, müssen wir diese Funktion vorbereiten. Die Funktion dieser Funktion besteht darin, das Rendern der Komponente abzuschließen. const Nachricht = Optionen => { // Rendern des Containers vorbereiten const container = document.createElement('div'); // Vnode generieren const vnode = createVNode(MessageConstructor, Optionen); // Renderrender(vnode, container); }; Was ist <Vorlage> <teleportieren zu="#app"> <Übergangsname="Nachricht-Ausblenden"> <div v-show="sichtbar" ref="ins" class="message" :style="customStyle">{{ Nachricht }}</div> </Übergang> </teleportieren> </Vorlage> Online-Erlebnis Code anzeigen Zusammenfassen: Oben geht es um die grundlegende und erweiterte Verwendung Das könnte Sie auch interessieren:
|
<<: HTML-Tutorial: Sammlung häufig verwendeter HTML-Tags (6)
>>: CSS-Beispielcode zur Implementierung von Schiebetüren
Natürlich fließen auch einige persönliche Erfahrun...
Inhaltsverzeichnis Design Komponentenkommunikatio...
Das Datenträgerkontingent ist die Speichergrenze ...
Einschließlich der Verwendung von Kontrollkästchen...
Auf einer Seite gibt es viele Steuerelemente (Elem...
Inhaltsverzeichnis Variable Datentypen Erweiterun...
Inhaltsverzeichnis Schlossübersicht Sperrklassifi...
Der Code sieht folgendermaßen aus: <!DOCTYPE h...
Inhaltsverzeichnis Einführung in FTP, FTPS und SF...
Rechtsklickmenü deaktivieren <body oncontextme...
Mybatis Paging-Plugin pageHelper - ausführliche E...
1. Bereiten Sie die Umgebung vor (laden Sie nodej...
Inhaltsverzeichnis 1minio ist einfach 2 Docker er...
Das MySQL-Entwicklungsteam hat am 14. Oktober 201...
Inhaltsverzeichnis einführen Beispiel Zusammenfas...