Vue3 kapselt seine eigene Paging-Komponente

Vue3 kapselt seine eigene Paging-Komponente

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

Hintergrund

Wenn 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

  • Gesamtattribut: Wird verwendet, um die Gesamtzahl der Daten zu übergeben
  • Pagesize-Attribut: Wie viele Datenelemente werden pro Seite angezeigt?
  • currentPage-Eigenschaft: aktuelle Standardseitenzahl
  • Seitenwechselereignis: Ein Ereignis, das ausgelöst wird, wenn sich die Seitenzahl ändert . Der Parameter ist die aktuelle Seitenzahl.

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:
  • Tabellen-Paging-Komponente basierend auf Vue.js
  • So kapseln Sie Paging-Komponenten basierend auf Vue
  • Analyse des Verwendungsbeispiels der Vue-Paging-Komponente „Tabellenseitenleiste“
  • Vue implementiert Paging-Komponente
  • Vue.js implementiert eine benutzerdefinierte Paging-Komponente vue-paginaiton
  • Verwenden von vue.js zum Erstellen von Paging-Komponenten
  • Vue-Beispielcode basierend auf der Kapselung von Element-UI-Paging-Komponenten
  • Implementierungscode der globalen Paging-Komponente von Vue
  • Implementierungsmethode der Tabellenpaging-Komponente basierend auf vue2
  • Implementierungsbeispiel für eine Swipe-Paging-Komponente basierend auf Vue

<<:  Detaillierte Erläuterung des Implementierungsprozesses der ServerSocket-Standard-IP-Bindung

>>:  So bedienen Sie JSON-Felder in MySQL

Artikel empfehlen

Vue3-Kompilierungsprozess - Quellcodeanalyse

Vorwort: Vue3 ist schon seit langem verfügbar. Vo...

Analyse der MySQL-Ansichtsfunktionen und Anwendungsbeispiele

Dieser Artikel veranschaulicht anhand von Beispie...

CSS-Implementierungscode für mehrstufige Menüs

Dies ist eine ziemlich coole Funktion, die Websei...

Detaillierte Erläuterung der vier Transaktionsisolationsebenen in MySQL

Die Testumgebung dieses Experiments: Windows 10+c...

Die beste Lösung zum Zurücksetzen des Root-Passworts von MySQL 8.0.23

Diese Methode wurde am 7. Februar 2021 bearbeitet...

Vue verwendet Canvas, um den Bildkomprimierungs-Upload zu realisieren

In diesem Artikel wird der spezifische Code von V...

Vue implementiert eine kleine Countdown-Funktion

In vielen Projekten muss eine Countdown-Funktion ...

Verwenden von Shadowsocks zum Erstellen eines transparenten LAN-Gateways

Inhaltsverzeichnis Installieren und konfigurieren...

...

So ändern Sie den Hostnamen in Linux dauerhaft

Wenn Sie Ihren Hostnamen ändern möchten, können S...