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
1. MySQL-Image herunterladen Befehl: docker pull ...
Beim Entwickeln von Anwendungen, die eine Datenba...
Heute habe ich bei der Überprüfung des Parallelit...
Vorwort Jedes Mal, wenn Sie Docker verwenden, um ...
Als ich kürzlich eine mobile Seite entwickelte, s...
Vorwort Wir wissen bereits, dass MySQL den SQL-Be...
Ich habe „Patterns for Sign Up & Ramp Up“ vor ...
Beim Erstellen einer B/S-Systemschnittstelle stößt...
Detailliertes Beispiel zum Beheben der Tablespace...
<br />Bevor Browser die nächste Generation v...
Ich habe es im MSI-Format installiert, hauptsächl...
Es gibt zwei Installationsmethoden für MySQL: MSI...
...Es ist so, heute wollte ich ein Popup-Fenster m...
Inhaltsverzeichnis Was ist Docker Compose Anforde...
Auf einer Seite gibt es viele Steuerelemente (Elem...