In diesem Artikelbeispiel wird der spezifische Code von vue3, der seine eigene Paging-Komponente kapselt, zu Ihrer Information geteilt. Der spezifische Inhalt ist wie folgt HintergrundWenn beim Durchsuchen von Listendaten viele Daten vorhanden sind und alle auf einmal angefordert werden, kann es zu Leistungseinbußen und Ladeverzögerungen kommen. In diesem Fall spielt die Paging-Komponente eine Schlüsselrolle. Sie kann nur einen Teil der Daten anfordern, ohne zu viel Seitenplatz einzunehmen. Wenn Sie andere Daten anzeigen möchten, können Sie eine Anforderung initiieren, indem Sie die Seitenzahl ändern und die Seitendaten aktualisieren. Nun kapseln wir die Paging-Komponente selbst Erforderliche Komponentenparameter
Komponenten-Landingcode my-pagination.vue <Vorlage> <div Klasse="meine-pagination"> <a href="javascript:;" :class="{ disabled: currentPage === 1 }" @click="changePage(false)">Vorherige Seite</a> <span v-if="currentPage > 3">...</span> <a href="javascript:;" v-for="Element in Liste" :Schlüssel="Artikel" :Klasse="{ aktiv: aktuelleSeite === Element }" @click="Seiteändern(Element)" >{{ Artikel }}</a > <span v-if="currentPage < Seiten - 2">...</span> <a href="javascript:;" :class="{ disabled: currentPage === pages }" @click="changePage(true)">Nächste Seite</a> </div> </Vorlage> <Skript> importiere { berechnet, ref } von 'vue-demi' Standard exportieren { Name: 'MyPagination', Requisiten: { gesamt: Typ: Nummer, Standard: 80 }, Seitengröße: { Typ: Nummer, Standard: 10 } }, setup(Eigenschaften, { emittieren, Attribute }) { // Aktuelle Seite const currentPage = ref(attrs.currentPage) // Berechnen Sie die Gesamtzahl der Seiten const pages = computed(() => Math.ceil(props.total / props.pagesize)) // Kombination der Seitenzahlenanzeige const list = computed(() => { const Ergebnis = [] // Wenn die Gesamtzahl der Seiten kleiner oder gleich 5 Seiten ist, if (pages <= 5) { für (lass i = 1; i <= Seiten; i++) { Ergebnis.push(i) } } anders { // Wenn die Gesamtzahl der Seiten größer als 5 Seiten ist // Kontrollieren Sie das Vorhandensein oder Fehlen von Auslassungspunkten an den beiden Enden, und die Anzahl der angezeigten Seitenzahlen wird mit der ausgewählten Seitenzahl zentriert, wenn (currentPage.value <= 2) { für (lass i = 1; i <= 5; i++) { Ergebnis.push(i) } } sonst wenn (aktuellerSeitenwert >= 3 und aktuellerSeitenwert <= Seitenwert - 2) { für (lass i = currentPage.value - 2; i <= currentPage.value + 2; i++) { Ergebnis.push(i) } } sonst wenn (aktuellerSeitenwert > Seitenwert - 2) { für (let i = Seiten.Wert - 4; i <= Seiten.Wert; i++) { Ergebnis.push(i) } } } Ergebnis zurückgeben }) // Klicken Sie auf die vorherige Seite, um die Seitenzahl zu ändern const changePage = type => { // Klicken Sie auf die Schaltfläche „Vorherige Seite“, wenn (Typ === false) { wenn (aktuellerSeitenwert <= 1) return aktuellerSeitenwert -= 1 } sonst wenn (Typ === wahr) { // Klicken Sie auf die Schaltfläche „Nächste Seite“, wenn (currentPage.value >= pages.value) return aktuellerSeitenwert += 1 } anders { // Klicken Sie auf die Seite currentPage.value = Typ } // Übergeben Sie die aktuelle Seitenzahl an die übergeordnete Komponente und führen Sie in diesem Ereignis zugehörige Vorgänge aus. emit('change-page', currentPage.value) } return { aktuelleSeite, Seiten, Liste, Seite ändern } } } </Skript> <style scoped lang="weniger"> .meine-pagination { Anzeige: Flex; Inhalt ausrichten: zentriert; Polsterung: 30px; > ein { Anzeige: Inline-Block; Polsterung: 5px 10px; Rand: 1px durchgezogen #e4e4e4; Rahmenradius: 4px; Rand rechts: 10px; &:schweben { Farbe: @xtxColor; } &.aktiv { Hintergrund: @xtxColor; Farbe: #fff; Rahmenfarbe: @xtxColor; } &.deaktiviert { Cursor: nicht erlaubt; Deckkraft: 0,4; &:schweben { Farbe: #333; } } } > Spanne { Rand rechts: 10px; } } </Stil> Verwenden von Komponenten <XtxPaginierung :gesamt="gesamt" :Seitengröße="reqParams.Seitengröße" :aktuelleSeite="1" @change-page="Seite ändern" /> Wirkung Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: Detaillierte Erläuterung des Implementierungsprozesses der ServerSocket-Standard-IP-Bindung
>>: So bedienen Sie JSON-Felder in MySQL
Inhaltsverzeichnis Szenario Wirkung Code Zusammen...
Inhaltsverzeichnis 1. Teleport-Nutzung 2. Vervoll...
Inhaltsverzeichnis Frage analysieren lösen Ersetz...
Server: Ubuntu Server 16.04 LSS Kunde: Ubuntu 16....
Inhaltsverzeichnis Was ist eine Multiumgebungskon...
Szenariosimulation: Einige inländische Unternehme...
1. Szenariobeschreibung: Mein Kollege hat mir gez...
In diesem Artikelbeispiel wird der spezifische HT...
Empfohlene Docker-Lernmaterialien: https://www.ru...
Inhaltsverzeichnis Vorwort Asynchrones Laden Pake...
1. Docker zieht das Image Docker Pull MySQL (stan...
Inhaltsverzeichnis Einige grundlegende Konfigurat...
Vorwort Vor vielen Jahren war ich ein Neuling auf...
Installation und Konfiguration von MySQL8.0.22 (s...
Ein großer Teil der Datenverwaltung besteht aus S...