Anwendungsbeispiele für die virtuelle Liste des WeChat-Applets

Anwendungsbeispiele für die virtuelle Liste des WeChat-Applets

Vorwort

Es gibt mehr als 4.000 beliebte Aktienlisten, die auf der Seite gerendert und während des Handels in Echtzeit aktualisiert werden müssen. Wenn Schnittstellen und Paging verwendet werden, bleibt die Seite beim Scrollen über Dutzende von Seiten immer häufiger hängen und muss in Echtzeit aktualisiert werden. Der letzte Ansatz besteht darin, die Daten am Anfang von ws zu übergeben. Wir müssen nur die Start- und Endindizes übergeben und nur wenige Tags auf der Seite generieren. Reduziert den Renderdruck erheblich.

Was ist eine virtuelle Liste?

Es bezieht sich lediglich auf das Rendern der Beschriftungen im sichtbaren Bereich, das ständige Umschalten der Start- und Endindizes, um die Ansicht beim Scrollen zu aktualisieren, und das gleichzeitige Berechnen des Versatzes.

Demo-Effekt

Vorbereitung

  • Berechnen Sie, wie viele Listen auf einem Bildschirm angezeigt werden können.
  • Die Höhe der Box.
  • Die Startposition der Schriftrolle.
  • Die Endposition des Bildlaufs.
  • Der Bildlaufversatz.

Bildschirmhöhe & Kastenhöhe

Im Applet können wir wx.createSelectorQuery verwenden, um die Bildschirmhöhe und die Boxhöhe abzurufen.

getEleInfo(ele) {
    returniere neues Promise( ( lösen, ablehnen ) => {
        const query = wx.createSelectorQuery().in(diese);
        Abfrage.Auswählen(ele).boundingClientRect();
        query.selectViewport().scrollOffset();
        query.exec( res => {
            Entschlossenheit (res);
        })
    })
},

dies.getEleInfo('.stock').then( res => {
    wenn (!res[0]) zurückgeben;
    // Bildschirmhöhe this.screenHeight = res[1].scrollHeight;
    //Boxhöhe this.boxhigh = res[0].height;
})

Start & Ende & Versatz

onPageScroll(e) {
    let { scrollTop } = e;
    dies.start = Math.floor(scrollTop / diese.boxhigh);
    dies.ende = dies.start + dies.visibleCount;
    dies.offsetY = dies.start * dies.boxhigh; 
}

scrollTop kann verstanden werden als: wie viele Kästchen von oben gescrollt wurden / die Höhe des Kästchens = der Startindex

Start + Wie viele Boxen können im sichtbaren Bereich der Seite angezeigt werden = Ende

Start * Kastenhöhe = Versatz

berechnet: {
    sichtbareDaten() {
        gib dieses.Datensegment zurück(dieses.Start, Math.min(dieses.Ende, diese.Datenlänge))
    },
}

Wenn sich Start und Ende ändern, verwenden wir Slice(this.start, this.end), um die Daten zu ändern, sodass der Inhalt des Etiketts rechtzeitig ersetzt werden kann.

Optimierung

Beim schnellen Scrollen erscheint unten ein leerer Bereich, da die Daten noch nicht geladen wurden. Wir können drei Bildschirme rendern, um sicherzustellen, dass die Daten beim Scrollen rechtzeitig geladen werden.

vorherigerCount() {
    gibt Math.min zurück (diesen.Start, diesen.sichtbarenAnzahl);
},
nächsterAnzahl() {
    gibt Math.min zurück (diese.sichtbareAnzahl, diese.Datenlänge - dieses.Ende);
},
sichtbareDaten() {
    lass start = this.start - this.prevCount,
        Ende = dies.Ende + dies.nächsterAnzahl;
    gib dieses.Datenstück(Start, Math.min(Ende, dieses.Datenlänge)) zurück
},

Wenn Sie den reservierten Versatz des Frontbildschirms berechnet haben, müssen Sie ihn wie folgt ändern: this.offsetY = this.start * this.boxhigh - this.boxhigh * this.prevCount

Beim Gleiten ändern sich Start, Ende und OffsetY ständig. Häufige Aufrufe von setData können dazu führen, dass das Applet den Speicher überschreitet und abstürzt. Hier drosseln wir beim Gleiten, um die Ausführungshäufigkeit von setData zu verringern.

    montiert() {
        dies.deliquate = dies.throttle(dieses.changeDeliquate, 130)
    },
    Methoden: {
        Gashebel(fn, Zeit) {
            var vorherige = 0;
            Rückgabefunktion (scrollTop) {
                lass jetzt = Date.now();
                wenn ( jetzt - vorherige > Zeit ) {
                    fn(nach oben scrollen)
                    vorher = jetzt;
                }
            }
        },
        ändereDeliquate(scrollTop) {
            dies.start = Math.floor(scrollTop / diese.boxhigh);
            dies.ende = dies.start + dies.visibleCount;
            dies.offsetY = dies.start * dies.boxhigh; 
            console.log('setData ausführen')
        }
    },
    onPageScroll(e) {
	let { scrollTop } = e;
        console.log('Scrollen ==================>>>>>>>')
        dies.deliquate(scrollTop);
    }

Wie aus der obigen Abbildung ersichtlich, reduziert jeder Scrollvorgang das Schreiben von setData um mindestens das Zweifache.

Die im Artikel beschriebene Demo finden Sie hier. Sie können bei Bedarf darauf zurückgreifen.

Zusammenfassen

Dies ist das Ende dieses Artikels über die virtuelle Listenanwendung des WeChat-Miniprogramms. Weitere relevante Inhalte zum virtuellen Miniprogramm finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder durchsuchen Sie die verwandten Artikel weiter unten. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Beispiel für die Implementierung einer virtuellen Liste im WeChat Mini-Programm

<<:  Drei Möglichkeiten, das horizontale Div-Layout auf beiden Seiten auszurichten

>>:  Einführung in den Aufbau eines DNS-Servers unter centos7

Artikel empfehlen

Docker konfiguriert den Speicherort lokaler Images und Container

Verwenden Sie den Befehl „Find“, um Dateien zu fi...

Beispielcode für kreisförmigen Hover-Effekt mit CSS-Übergängen

Dieser Artikel stellt vor Online-Vorschau und Dow...

Web-Standardanwendung: Neugestaltung der Tencent QQ-Homepage

Die Homepage von Tencent QQ wurde neu gestaltet un...

Empfehlen Sie einige nützliche Lernmaterialien für Neulinge im Webdesign

Viele Leute haben mich auch gefragt, welche Büche...

Eine kurze Einführung in die MySQL-Speicher-Engine

1. MySql-Architektur Bevor wir die Speicher-Engin...

Detaillierte Erläuterung des zeitgesteuerten Protokollschneidens von Nginx

Vorwort Standardmäßig werden Nginx-Protokolle in ...

CSS Transition erweitert und reduziert Elemente durch Ändern der Höhe

Ein allgemeines Entwicklungsbedürfnis besteht dar...

JavaScript realisiert Lupen-Spezialeffekte

Der zu erzielende Effekt: Wenn die Maus auf das k...

Erste Schritte mit Front-End-Vue-Unit-Tests

Inhaltsverzeichnis 1. Warum brauchen wir Unit-Tes...

HTML-Grundlagen HTML-Struktur

Was ist eine HTML-Datei? HTML steht für Hyper Text...

Teilen Sie das Problem, dass Ubuntu 19 die Docker-Quelle nicht installieren kann

Entsprechend den wichtigsten Websites und persönl...

Beispielcode zur Implementierung des Div-Konkaveckenstils mit CSS

Bei der normalen Entwicklung verwenden wir normal...

Einfaches Setup von VMware ESXi6.7 (mit Bildern und Text)

1. Einführung in VMware vSphere VMware vSphere is...

Detaillierte Erklärung der Filter und Anweisungen in Vue

Inhaltsverzeichnis benutzerdefinierte Vue-Direkti...