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

Schritte zum Erstellen eines Docker-Images mit Dockerfile

Dockerfile ist eine Textdatei, die Anweisungen en...

Implementierung von FIFO in der Linux-Prozesskommunikation

FIFO-Kommunikation (First In First Out) FIFO-Name...

Detaillierte Erläuterung der praktischen Anwendung des HTML-Tabellenlayouts

Wann wird die Tabelle eingesetzt? Tabellen werden...

Eine kurze Einführung in JavaScript-Arrays

Inhaltsverzeichnis Einführung in Arrays Array-Lit...

Tomcat analysiert XML und erstellt Objekte durch Reflektion

Der folgende Beispielcode stellt die Prinzipien d...

Eine kurze Diskussion über JavaScript-Drosselung und Anti-Shake

Inhaltsverzeichnis Drosselung und Anti-Shake Konz...

So verwenden Sie Vuex in einem Vue-Projekt

Inhaltsverzeichnis Was ist Vuex? Vuex-Nutzungszyk...

Nginx implementiert ein Codebeispiel für die https-Websitekonfiguration

https-Basisport 443. Er wird für etwas verwendet,...

Einführung und Verwendung des JS-Beobachtermodus

Inhaltsverzeichnis I. Definition 2. Anwendungssze...

Wird der Index in der MySQL-Abfragebedingung verwendet?

Wenn Sie ein Arbeitgeber fragt, ob in einer MySQL...

Lösung für viele Zeilenumbrüche und Wagenrückläufe in MySQL-Daten

Inhaltsverzeichnis Finden Sie das Problem 1. So e...

Teilen Sie 20 JavaScript-Einzeilencodes

Inhaltsverzeichnis 1. Holen Sie sich den Wert des...