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
Experimentelle Umgebung Apache und Tomcat sind be...
Installieren Sie die entpackte Version der MySql-...
Die Semantik, der Schreibstil und die Best Practi...
In diesem Artikel wird der spezifische Code von j...
Inhalt dieses Artikels: Seitenhohlmaskenebene, Se...
Informationen zur Überprüfung der Kennwortstärke:...
Beim Entwerfen einer Seite müssen wir das DIV häu...
Inhaltsverzeichnis 1. Software- und Systemabbild ...
Was Sie lernen werden 1. Softwareinstallation und...
1. HTML-Tags mit Attributen XML/HTML-CodeInhalt i...
Nachdem das Formular übermittelt wurde, wird die z...
Was ist ZooKeeper ZooKeeper ist ein Top-Level-Pro...
Manchmal müssen wir den Hyperlink <a> anstel...
Kürzlich hat Microsoft Windows Server 2016 veröff...
Das img-Tag in XHTML sollte wie folgt geschrieben...