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

WeChat-Applet zur Bestimmung, ob die Mobiltelefonnummer legal ist Beispielcode

Inhaltsverzeichnis Szenario Wirkung Code Zusammen...

Implementierung der Multi-Environment-Konfiguration (.env) des Vue-Projekts

Inhaltsverzeichnis Was ist eine Multiumgebungskon...

Detaillierte Erklärung des EXPLAIN-Befehls und seiner Verwendung in MySQL

1. Szenariobeschreibung: Mein Kollege hat mir gez...

JavaScript-HTML zur Implementierung der mobilen Red Envelope Rain-Funktionsseite

In diesem Artikelbeispiel wird der spezifische HT...

Best Practices für die Entwicklung von Amap-Anwendungen mit Vue

Inhaltsverzeichnis Vorwort Asynchrones Laden Pake...

So verwenden Sie VUE, um die Ali Iconfont-Bibliothek online aufzurufen

Vorwort Vor vielen Jahren war ich ein Neuling auf...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.22

Installation und Konfiguration von MySQL8.0.22 (s...

Analyse des SELECT-Abfrageausdrucks in der MySQL-Datenbank

Ein großer Teil der Datenverwaltung besteht aus S...