So kapseln Sie Paging-Komponenten manuell in Vue3.0

So kapseln Sie Paging-Komponenten manuell in Vue3.0

In diesem Artikel wird der spezifische Code der manuellen Kapselungs-Paging-Komponente von vue3.0 zu Ihrer Information freigegeben. Der spezifische Inhalt ist wie folgt

1. Einführung in die übergeordnete Komponente

src/views/waren/komponenten/waren-kommentar.vue

<!-- Seite gibt die Standardseite an, die beim Initialisieren der Seitennummerierung angezeigt werden soll -->
    <XtxPagination @change-page='changePage' :pagesize='reqParams.pageSize' :total='gesamt' :page='1' />
    // Rufen Sie die Schnittstelle import {findCommentListByGoods } von '@/api/product.js' auf.
 Standard exportieren{
  aufstellen(){
  // Vorbereitung der Screening-Bedingungen const reqParams = reactive({
      // Aktuelle Seitenzahl Seite: 1,
      //Anzahl der Einträge pro SeiteSeitengröße: 10,
      // Gibt es ein Bild hasPicture: null,
      // Filterbedingungs-Tag: null,
      // Sortierfeld sortField: null
    })
    // Auf Parameteränderungen warten watch(reqParams, () => {
   findCommentListByGoods(goods.value.id, reqParams).then(ret => {
        Gesamtwert = Anzahl der Ergebnisse
        Liste.Wert = ret.Ergebnis.Elemente
      })
    }, {
      sofort: wahr
    })
    // Änderung der Seitenzahl steuern const changePage = (page) => {
      // Paging-Parameter ändern und Schnittstelle erneut aufrufen reqParams.page = page
    }
    
  }
 }

2. Unterkomponenten

src/components/library/xtx-pagination.vue

<Vorlage>
  <div Klasse="xtx-pagination">
    <a @click='changePage(false)' href="javascript:;" :class="{disabled: currentPage===1}">Vorherige Seite</a>
    <span v-if='currentPage > 3'>...</span>
    <a @click='changePage(item)' href="javascript:;" :class='{active: currentPage===item}' v-for='Element in Liste' :key='item'>{{item}}</a>
    <span v-if='currentPage < Seiten - 2'>...</span>
    <a @click='changePage(true)' href="javascript:;" :class='{disabled: currentPage===pages}'>Nächste Seite</a>
  </div>
</Vorlage>
<Skript>
importiere { berechnet, ref } von 'vue'

Standard exportieren {
  Name: "XtxPagination",
  Requisiten: {
    gesamt:
      Typ: Nummer,
      Standard: 80
    },
    Seitengröße: {
      Typ: Nummer,
      Standard: 10
    }
    //Standardmäßige anfängliche Seitenzahl// Seite: {
    // Typ: Zahl,
    // Standard: 1
    // }
  },
  setup (eigenschaften, { emittieren, attrs }) {
    // attrs stellt die von der übergeordneten Komponente übergebenen Attribute dar, aber props empfängt die Attribute nicht, was nicht reagiert // ​​Informationen zur Seitenzahl zur Halbzeit dynamisch berechnen // Anzahl der Elemente pro Seite // const pagesize = 8
    // Gesamtzahl der Seiten let pages = Math.ceil(props.total / props.pagesize)
    //Aktuelle Seitennummer// console.log(attrs.page)
    const aktuelleSeite = ref(attrs.page || 1)
    // Seitenzahlenliste dynamisch berechnen const list = computed(() => {
      // Wenn sich der von der übergeordneten Komponente übergebene Gesamtwert ändert, wird die berechnete Eigenschaft neu berechnet: Seiten = Math.ceil(props.total / props.pagesize)
      const Ergebnis = []
      // Die Gesamtseitenzahl ist kleiner oder gleich 5; größer als 5
      wenn (Seiten <= 5) {
        // Die Gesamtseitenzahl ist kleiner oder gleich 5 für (let i = 1; i <= Seiten; i++) {
          Ergebnis.push(i)
        }
      } anders {
        // Die Gesamtseitenzahl ist größer als 5
        wenn (aktuellerSeitenwert <= 2) {
          // Linker kritischer Wert für (let i = 1; i <= 5; i++) {
            Ergebnis.push(i)
          }
        } sonst wenn (currentPage.value >= Seiten - 1) {
          // Richtiger kritischer Wert für (let i = Seiten - 4; i <= Seiten; i++) {
            Ergebnis.push(i)
          }
        } anders {
          // Zwischenzustand für (let i = currentPage.value - 2; i <= currentPage.value + 2; i++) {
            Ergebnis.push(i)
          }
        }
      }
      Ergebnis zurückgeben
    })
    // Änderungen der vorherigen und nächsten Seiten steuern const changePage = (Typ) => {
      wenn (Typ === falsch) {
        // Vorherige Seite // Wenn die Seite die erste Seite ist, ist der Klickvorgang verboten, if (currentPage.value === 1) return
        wenn (aktuellerSeitenwert > 1) {
          aktuellerSeitenwert -= 1
        }
      } sonst wenn (Typ === wahr) {
        // Nächste Seite // Wenn die Seite die letzte Seite ist, ist der Klickvorgang verboten, if (currentPage.value === Seiten) return
        if (currentPage.value < Seiten) {
          aktuellerSeitenwert += 1
        }
      } anders {
        // Klicken Sie auf die Seite currentPage.value = Typ
      }
      emittieren('Seite ändern', aktuelleSeite.Wert)
    }
    return { Liste, aktuelleSeite, Seiten, Seite ändern}
  }
}
</Skript>
<style scoped lang="weniger">
.xtx-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>

Wissenspunkt: attrs stellt die von der übergeordneten Komponente übergebenen Attribute dar, aber props empfängt die Attribute nicht, was nicht reagiert (neu in vue3)

3. Ergebnisse erzielen

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

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

>>:  Detaillierte Schritte zur Installation des 64-Bit-Ubuntu-Systems und des Docker-Tools auf Raspberry Pi 3B+

Artikel empfehlen

So erhalten Sie die Breite und Höhe des Bildes im WeChat-Applet

Herkunft Zurzeit arbeite ich an Anforderung A, in...

Rankings zur Benutzerfreundlichkeit chinesischer Websites

<br />Die Benutzererfahrung wird von chinesi...

Bedingte Kommentare zur Bestimmung des Browsers (IE-Reihe)

<!--[if IE 6]> Nur IE6 kann erkennen <![e...

Pessimistisches Sperren und optimistisches Sperren in MySQL

In relationalen Datenbanken sind pessimistisches ...

Detaillierte Erklärung zum MySQL-Dateispeicher

Was ist ein Dateisystem Wir wissen, dass Speicher...

Analyse der Prinzipien und Verwendung von Linux-Hardlinks und Softlinks

Im Linux-System gibt es einen Dateityp namens Lin...

Vor- und Nachteile des Tabellenlayouts und warum es nicht empfohlen wird

Nachteile von Tabellen 1. Tabellen nehmen mehr Byt...

Vue: Detaillierte Erklärung von Speicherlecks

Was ist ein Speicherleck? Ein Speicherleck bedeut...

Sequentielles und zufälliges Schreiben auf Linux-Festplatten

1. Einleitung ● Zufälliges Schreiben führt dazu, ...

Der Unterschied zwischen KEY, PRIMARY KEY, UNIQUE KEY und INDEX in MySQL

Das im Titel angesprochene Problem lässt sich sch...

VMware ESXI-Servervirtualisierungscluster

Inhaltsverzeichnis Zusammenfassung Umgebung und W...

Details zur Verwendung von „order by“ in MySQL

Inhaltsverzeichnis 1. Einleitung 2. Haupttext 2.1...