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
In diesem Artikel wird der spezifische Code von j...
1. Verstehen Sie zunächst das Overflow-Wrap-Attri...
Denn die von Docker abgerufenen Basisimages wie C...
1. Laden Sie Navicat für MySQL 15 herunter https:...
Der spezifische Code lautet wie folgt: <Stil&g...
Als Reaktion auf die Popularität von nodejs haben...
In diesem Artikelbeispiel wird der spezifische Co...
Zuerst dachte ich, es läge an der Geschwindigkeit ...
Wenn Sie Dateien zwischen Windows und Linux übert...
Inhaltsverzeichnis Vorwort Projektdesign hinteres...
Ähnliche Strukturen: Code kopieren Der Code laute...
Inhaltsverzeichnis Vorwort 1. Hintergrund 2. Simu...
Ich habe kürzlich Django bereitgestellt und wollt...
Inhaltsverzeichnis 1 Element Offset-Serie 1.1 Off...
Ich habe gerade angefangen, React für Projekte zu...