Verwendung des Skelettbildschirms
Vue-Architektur-Skelett-Bildschirm Ideenübersicht
Definieren einer abstrakten KomponenteWas ist eine abstrakte Komponente? Eine Komponente, die beim Rendern übersprungen wird und nur Laufzeitoperationen ausführt. Standard exportieren { Name: 'GmSkeleton', abstract: true // Eigenschaften abstrakter Komponenten} Holen Sie sich den Steckplatz und initialisieren Sie den Operationsskelettbildschirmrendern(h) { const slots = this.$slots.default || [h('')] dies.$nextTick().then(() => { dieses.handlerPrefix(Slots, dieses.showSpin ? dieses.addSkeletPrefix : dieses.removeSkeletPrefix) }) gib Slots.Länge > 1 zurück? h('div', { staticClass: this.showSpin ? 'g-spinner' : '' }, Steckplätze) : Steckplätze } Hier setzen wir die Slot-Verarbeitungsmethode in nextTick, da das HandlerPrefix den echten DOM abrufen muss. NextTick wird verwendet, um alle Methoden in der sortierten Aktualisierungswarteschlange auszuführen. Vor der Ausführung des Renderns wurde der RenderWatcher der GMSkeleton-Komponente in der Aktualisierungswarteschlange gesammelt. Daher kann die CallBack-Funktion von nextTick nach dem Rendern den gesamten echten DOM in den entsprechenden Slots abrufen. Wenn Sie das Prinzip von nextTick nicht verstehen, gehen Sie bitte zu dem, was Sie über nextTick nicht wissen. Name der Zyklusslot-OperationsklassehandlerComponent(slot, handler/* addSkeletPrefix | removeSkeletPrefix */, init) { const originchildren = (((slot.componentInstance || {})._vnode || {}).componentOptions || {}).children const compchildren = ((slot.componentInstance || {})._vnode || {}).children !init && Handler(Steckplatz) wenn (compchildren) dies.handlerPrefix(compchildren, handler, false) wenn (Herkunftskinder) this.handlerPrefix(Herkunftskinder, Handler, false) }, handlerPrefix(slots, handler, init = true) { slots.fürJeden(slot => { var children = slot.children || (slot.componentOptions || {}).children || ((slot.componentInstance || {})._vnode || {}).children wenn (slot.data) { wenn (!slot.componentOptions) { !init && Handler(Steckplatz) } sonst wenn (!this.$hoc_utils.getAbstractComponent(slot)) { ;(Funktion(Slot) { const handlerComponent = dies.handlerComponent.bind(dies, slot, handler, init) const einfügen = (slot.data.hook || {}).insert ;(slot.data.hook || {}).insert = () => { // Funktionsrefactoring, ändern Sie den ursprünglichen Komponenten-Hook und stellen Sie sicher, dass das Einfügen nur einmal ausgeführt wird insert(slot) handlerComponent() } ;(slot.data.hook || {}).postpatch = handlerKomponente }).rufen Sie (diesen, Steckplatz) auf. } } wenn (Slot && Slot.elm && Slot.elm.NodeType === 3) { wenn (diese.showSpin) { slot.memorizedtextContent = slot.elm.textContent slot.elm.textContent = '' } anders { slot.elm.textContent = slot.memorizedtextContent || slot.elm.textContent || slot.text } } Kinder && this.handlerPrefix(Kinder, Handler, false) }) }, Schritt für Schritt Analyse:
Der statische Klassenname für den Betriebssystem-VnodeaddSkeletPrefix(Slot) { const rootVnode = slot.componentOptions ? (slot.componentInstance || {})._vnode || {} : Steckplatz; wenn (rootVnode.elm) { rootVnode.elm.classList.add(dieses.skeletPrefix) } anders { ;(rootVnode.data || {}).staticClass += ` ${this.skeletPrefix}` } }, entferneSkeletPrefix(Slot) { const rootVnode = slot.componentOptions ? (slot.componentInstance || {})._vnode || {} : Steckplatz; wenn (rootVnode.elm) { rootVnode.elm.classList und rootVnode.elm.classList.entfernen(this.skeletPrefix) } sonst wenn (rootVnode.data.staticClass) { rootVnode.data.staticClass = rootVnode.data.staticClass.replace(` ${this.skeletPrefix}`, '') } } addSkeletePrefix wird verwendet, um den GM-Skeleton-Klassennamen hinzuzufügen, während removeSkeletonPrefix verwendet wird, um den GM-Skeleton-Klassennamen zu löschen AnwendungVue von „vue“ importieren importiere GMSkeleton von 'Pfad/zu/GMSkeleton' Vue.use (GMSkeleton) <gm-skelett> <Komponente /> <div></div> <div><span>Frontend Martin</span></div> </gm-skelett> Übergeben von Werten
Die Wirkung ist wie folgtDer spezifische Stil wird gemäß dem vom Entwickler geschriebenen Stil generiert und von GM-Skeleton umschlossen, wie oben gezeigt. Das Folgende ist ein einfaches Beispiel Vollständige Adresse80 Zeilen Code zur Implementierung des Vue-Skelettbildschirms Oben sind die Einzelheiten des Beispiels zur Implementierung des Skeleton-Bildschirms mit Vue aufgeführt. Weitere Informationen zur Implementierung des Skeleton-Bildschirms mit Vue finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
>>: Erstellen Sie eine Scala-Umgebung unter Linux und schreiben Sie ein einfaches Scala-Programm
Inhaltsverzeichnis Frage Reproduktion Implizite K...
Vorwort Dieser Artikel beschreibt zwei Situatione...
Inhaltsverzeichnis Vorwort Start Grundlegendes La...
1. Erstellen Sie eine Tabelle mit HTML-Tags: Code...
1. Der Unterschied zwischen TEXT und BLOB Der ein...
Ich habe vor kurzem ein kleines Programmierprojek...
Inhaltsverzeichnis 1. Grundlegende Verwendung von...
1. Implementierungsprinzip des Scrollens Das Scro...
Anforderung: Die Seite muss ein Bild anzeigen, ab...
MySQL x64 stellt kein Installationsprogramm berei...
Ich glaube, die Befehle, die ich am häufigsten ve...
In diesem Artikel wird der spezifische Code von J...
Inhaltsverzeichnis Backend: Rails API-Teil Front-...
Vorherige Das ist eine klassische alte Frage. Da ...
XML Schema ist eine XML-basierte Alternative zu D...