1. Lernen Sie Teleport kennenWenn wir beispielsweise globale Komponenten wie Modalkomponenten, Nachrichtenkomponenten und Ladekomponenten ohne Teleport schreiben und sie in eine VUE-Datei einfügen, wird ihre HTML-Struktur der Komponentenvorlage hinzugefügt, was nicht perfekt ist.
Nachfolgend finden Sie eine praktische Einführung zur Entwicklung modaler Komponenten mit Teleport 2. Grundlegende Verwendung von TeleportDas Schreiben von Teleport ist sehr einfach. Sie müssen den Inhalt nur mit <Teleport></Teleport> umschließen und angeben, unter welchem übergeordneten Knoten das HTML angehängt werden soll. <teleportieren nach="#modal"> Inhalt</teleport> 3. Erster Schritt OptimierungWenn wir den DOM, den Teleport mounten soll, im Code fest codieren, wird jedes Mal, wenn eine globale Komponente erstellt wird, ein DOM-Knoten benötigt, und es wird immer mehr davon geben, und sie werden immer existieren. Diese Schreibmethode ist nicht sehr elegant. Eine bessere Lösung ist:
aufstellen(){ const node = Dokument.createElement('div') node.id = "modal" Dokument.Body.AppendChild(Knoten) beiUnmountet(() => { Dokument.Body.RemoveChild(Knoten) }) } 4. Zweiter Schritt der OptimierungWenn wir in Zukunft Nachrichtenkomponenten, Ladekomponenten und andere Funktionen hinzufügen möchten, müssen wir auch Teleport verwenden. Es ist etwas redundant, einen solchen Codeabschnitt in jede Komponente zu schreiben. Vue3 ermöglicht es uns, die logischen Funktionen einfach zu extrahieren und so den Zweck der Wiederverwendung von Logik zu erreichen. Wir erstellen die Datei useDOMCreate.ts im Ordner src-hooks, um diese Logik zu kapseln // hooks/useDOMCreate.ts importiere { onUnmount } von 'vue' Funktion useDOMCreate(nodeId:string):void { const node = Dokument.createElement('div') node.id = Knoten-ID Dokument.Body.AppendChild(Knoten) beiUnmountet(() => { Dokument.Body.RemoveChild(Knoten) }) } Standardmäßig exportieren useDOMCreate verwenden: importiere useDOMCreate von '../hooks/useDOMCreate' setup(Eigenschaften, ctx) { useDOMCreate('modal') } 5. Modalkomponente implementierenAuf die Einzelheiten der Kapselung der Modalkomponente wird hier nicht näher eingegangen, und es gibt keine komplizierte Logik. Direkt auf dem Code. //Modal.vue <Vorlage> <teleportieren nach="#modal"> <div Klasse="modal d-block" tabindex="-1" v-if="isVisible"> <div Klasse="modal-dialog"> <div Klasse="modaler Inhalt"> <div Klasse="modal-header"> <h5 class="modal-title">{{title}}</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Schließen"> <span aria-hidden="true" @click="onClose">×</span> </button> </div> <div Klasse="modal-body"> <Steckplatz></Steckplatz> </div> <div Klasse="modal-footer"> <button type="button" class="btn btn-secondary" data-dismiss="modal" @click="onClose">Abbrechen</button> <button type="button" class="btn btn-primary" @click="onConfirm">Bestätigen</button> </div> </div> </div> </div> </teleportieren> </Vorlage> <script lang="ts"> importiere { defineComponent } von 'vue' importiere useDOMCreate von '../hooks/useDOMCreate' exportiere StandarddefiniereKomponente({ Name: "Modal", gibt aus: ['Modell schließen', 'Modell bestätigen'], Requisiten: { Titel: Typ: Zeichenfolge, Standard: '' }, istSichtbar: { Typ: Boolean, Standard: false } }, setup(Eigenschaften, ctx) { useDOMCreate('modal') const onClose = () => { ctx.emit('Modell schließen') } const beiBestätigung = () => { ctx.emit('Modell bestätigen') } zurückkehren { beim Schließen, beiBestätigen } } }) </Skript> Anwendungsbeispiele <Vorlage> <div Klasse="Beitragsdetailseite"> <button type="button" class="btn btn-danger" @click="handleDelete">Löschen</button> <modal title='Sind Sie sicher, dass Sie löschen möchten? ' :istSichtbar="modalSichtbar" @model-close="handleModalClose" @model-confirm="handleModalConfim"> <p>Möchten Sie diesen Artikel wirklich löschen? </p> </modal> </div> </Vorlage> <script lang="ts"> importiere { defineComponent, ref } von 'vue' Modal importieren aus '../components/Modal.vue' exportiere StandarddefiniereKomponente({ Name: 'Post-Detail', Komponenten: { Modal }, aufstellen() { const modalVisible = ref(false) const handleDelete = () => { modalVisible.value = true } const hanldeModalClose = () => { modalVisible.value = false } const handleModalConfim = () => { modalVisible.value = false ... //Anschließende logische Verarbeitung} zurückkehren { hanldeModalClose, handleModalConfim, handleDelete, modalSichtbar } } }) </Skript> Oben finden Sie Einzelheiten dazu, wie Vue Modalkomponenten basierend auf Teleport implementiert. Weitere Informationen zur Implementierung von Modalkomponenten durch Vue Teleport finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: So setzen Sie das Root-Passwort in mysql8.0.12 zurück
>>: Implementierung des Pycharm-Installationstutorials auf Ubuntu 18.04
Vorwort Der Autor war schon immer der Meinung, da...
Dieser Artikel veranschaulicht anhand von Beispie...
Vorwort MySQL ist das beliebteste relationale Dat...
Die Methode hasOwnProperty() des Objekts gibt ein...
Version 1.4.2 Offizielle Dokumentation Dockerhub ...
1. Ursache Der offizielle Cerbot ist zu nervig. E...
In diesem Artikel wird der spezifische Code für J...
Vorwort Aus Sicherheitsgründen kann sich der Root...
In diesem Artikel wird der spezifische Code von j...
Beim Schreiben von Projekten stoßen wir häufig au...
Geschichtsroute Der Verlaufsmodus bezieht sich au...
Fehlerszenario Beim Aufrufen von JDBC zum Einfüge...
Inhaltsverzeichnis 1. Häufige Fehler von Anfänger...
Gruppe erstellen Die Gruppierung wird in der GROU...
In diesem Artikelbeispiel wird der spezifische Ja...