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
Inhaltsverzeichnis Vorne geschrieben Zwei-Wege-Ve...
Inhaltsverzeichnis 1. Datenbankbeschränkungen 1.1...
Inhaltsverzeichnis Vorwort Was ist VueUse Einfach...
Inhaltsverzeichnis Vorwort Beziehungen zwischen v...
1. MySQL-Transaktionskonzept MySQL-Transaktionen ...
A: Normalerweise im Client gespeichert. jwt oder ...
<div Klasse="Seitenleiste"> <d...
Der Unterschied zwischen := und = = Nur beim Setz...
Übersicht zur Netzwerkkommunikation Bei der Entwi...
Fehler: Connection to blog0@localhost failed. [08...
So schreiben Sie mithilfe von Filtern transparente...
Einführung Im vorherigen Artikel wurden die einfa...
Vorwort Im vorherigen Artikel „Detaillierte Erklä...
lsof (List Open Files) ist ein Tool zum Anzeigen ...
Vorwort Beim Sichern der Datenbank wird eine voll...