vue+element分頁組件封裝成公共組件


vue+element分頁組件封裝成公共組件


1.首先定義一個分頁子組件

 <el-pagination
      :background="background"
      :current-page.sync="currentPage"  //第幾頁
      :page-size.sync="pageSize"  //每頁顯示幾條數據
      :layout="layout"
      :page-sizes="pageSizes"  //可選的每頁多少條數據
      :total="total"
      @size-change="handleSizeChange"  //當前頁多少條數據的方法
      @current-change="handleCurrentChange" //顯示第幾頁
    />

2.定義props 接受父組件傳過來的值 代碼如下:

props: {
    total: {
      required: true,
      type: Number
    },
    page: {
      type: Number,
      default: 1  //默認第一頁
    },
    limit: {
      type: Number,
      default: 20  //默認每頁20條
    },
    pageSizes: {
      type: Array,
      default() {
        return [10, 20, 30, 50]  //默認顯示可選的每頁多少條數據
      }
    },
    layout: {
      type: String,
      default: 'total, sizes, prev, pager, next, jumper'
    },
    background: {
      type: Boolean,
      default: true
    },
    autoScroll: {
      type: Boolean,
      default: true
    },
    hidden: {
      type: Boolean,
      default: false
    }
  },

3.在定義2個計算屬性 一個為當前頁多少條數據,一個為第幾頁,因為會改變這2個值 所以設置了set屬性

computed: {
    currentPage: {
      get() {
        return this.page
      },
      set(val) {
        this.$emit('update:page', val)  //改變的第幾頁的值賦值給父組件
      }
    },
    pageSize: {
      get() {
        return this.limit
      },
      set(val) {
        this.$emit('update:limit', val) //改變的當前頁幾條數據的值賦值給父組件
      }
    }
  },

4.在定義2個方法 一個改變頁數,一個當前頁多少條數據

methods: {
    handleSizeChange(val) {
      this.$emit('pagination', { pageIndex: 1, pageSize: val })
     
    },
    handleCurrentChange(val) {
      this.$emit('pagination', { pageIndex: val, pageSize: this.pageSize })
      
    }
  }

5.然后在父組件 注冊 引用

import Pagination from '@/components/Pagination'

export default {
    components: {  Pagination},
    data() {
      return {
        length: 0,
        pageSize: 20, //要傳過去的數據 每頁多少條數據
        pageIndex: 1, //要傳過去的數據 第幾頁
      }
    },


6.父組件 使用子組件 並接受子組件傳回的事件

<pagination v-show="length>0" :total="length" :page.sync="pageIndex" 
 :limit.sync="pageSize"  @pagination="handlePageChange"/>

 handlePageChange(data) {
        this.pageIndex = data.pageIndex
        this.pageSize = data.pageSize
        this.loadData()//這是重新獲取數據的方法
      }

最后封裝的公用分頁組件就好了 就可以在任何頁面使用這個分頁組件了
————————————————
版權聲明:本文為CSDN博主「漸離~~」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/zo429515/article/details/105359576/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM