vue+element?分頁(yè)封裝的實(shí)現(xiàn)示例
項(xiàng)目場(chǎng)景
分頁(yè)也是我們?cè)趯?shí)際應(yīng)用當(dāng)中非常常見的存在,其實(shí)分頁(yè)本身在element中做的就挺好的了,但是使用確實(shí)非常的多,所以還是有必要封裝一下,主要是為了減少代碼的冗余,以及提升開發(fā)的效率和降低后續(xù)維護(hù)的成本。
認(rèn)識(shí)分頁(yè)
這是一段普通分頁(yè)的示例
<template>
<div class="block">
<span class="demonstration">完整功能</span>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[100, 200, 300, 400]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="400">
</el-pagination>
</div>
</template>
<script>
export default {
methods: {
handleSizeChange(val) {
console.log(`每頁(yè) ${val} 條`);
},
handleCurrentChange(val) {
console.log(`當(dāng)前頁(yè): ${val}`);
}
},
data() {
return {
currentPage: 4
};
}
}
</script>效果是這樣的

在這當(dāng)中用到了我們常用的七個(gè)字段:
1.current-page
:current-page="currentPage"
代表的是當(dāng)前在第幾頁(yè),并且可以輸入進(jìn)行跳轉(zhuǎn)任意存在的頁(yè)數(shù),主要效果如下:

2.page-sizes
:page-sizes="[100, 200, 300, 400]"
用于設(shè)置分頁(yè)每頁(yè)顯示多少條,主要效果如下:

3.page-size
:page-size="100"
設(shè)置默認(rèn)顯示多少條(這里默認(rèn)為100條),主要效果如下:

4.layout
layout="total, sizes, prev, pager, next, jumper"
用于設(shè)置組件布局,子組件名用逗號(hào)分隔,效果如下:

字段說明:
- total : 總頁(yè)數(shù)
- sizes:一頁(yè)顯示多少條
- prev:上一頁(yè)
- pager:點(diǎn)擊頁(yè)數(shù)跳轉(zhuǎn)(只允許跳轉(zhuǎn)上下兩頁(yè)以及起止頁(yè))
- next:下一頁(yè)
- jumper:輸入跳轉(zhuǎn)任意存在頁(yè)
5.total
:total="400"
展示總頁(yè)數(shù),效果如下。
6.size-change
@size-change="handleSizeChange"
7.current-change
@current-change="handleCurrentChange"
觸發(fā)事件,currentPage 改變時(shí)會(huì)觸發(fā),也就是修改每頁(yè)顯示多少條時(shí)觸發(fā)。

封裝分頁(yè)
弄清楚每個(gè)字段的意思后便可以進(jìn)行封裝了。主要思路是,封裝的組件通過父組件將currentPage,total,sizes,pager,jumper傳入,并且在觸發(fā)@size-change,@current-change事件時(shí),將事件信息傳給父組件。
創(chuàng)建paging

進(jìn)行封裝
<!--
author:Wh1T3ZzT
component:分頁(yè)
time:2023/07/25
-->
<template>
<div class="paging">
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="pageSizes"
:page-size="pageSize"
:layout="layout"
:total="total">
</el-pagination>
</div>
</template>
<script>
export default {
data(){
return{
}
},
props:{
currentPage:{
default(){
return [];
}
},
pageSizes:{
default(){
return [];
}
},
pageSize:{
default(){
return [];
}
},
layout:{
default(){
return [];
}
},
total:{
default(){
return [];
}
}
},
methods:{
handleSizeChange(val) {
this.$emit('handleSizeChange',val)
console.log(`傳給父組件:每頁(yè) ${val} 條`);
},
handleCurrentChange(val) {
this.$emit('handleCurrentChange',val)
console.log(`傳給父組件:當(dāng)前頁(yè): ${val}`);
},
}
}
</script>
<style>
</style>封裝完成!
頁(yè)面中使用:
引入
<template>
<div>
<Paging
:currentPage="1"
:pageSizes="[5,10,20,50,100]"
:pageSize="10"
layout="total, sizes, prev, pager, next, jumper"
:total="10"
@handleSizeChange="PagingSizeChange"
@handleCurrentChange="PagingCurrentChange"
></Paging>
</div>
</template>
<script>
import Paging from '@/components/paging/index.vue'
export default {
methods:{
PagingSizeChange(val){
console.log(`父組件接收到每頁(yè): ${val} 條`);
},
PagingCurrentChange(val){
console.log(`父組件接收到當(dāng)前頁(yè): ${val}`);
},
}
}
</script>效果


到此這篇關(guān)于vue+element 分頁(yè)封裝的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)vue element 分頁(yè)封裝內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
el-select二次封裝實(shí)現(xiàn)可分頁(yè)加載數(shù)據(jù)的示例代碼
使用el-select時(shí)一次性渲染幾百條數(shù)據(jù)時(shí)會(huì)造成頁(yè)面克頓, 可以通過分頁(yè)來實(shí)現(xiàn),所以本文給大家介紹了el-select二次封裝實(shí)現(xiàn)可分頁(yè)加載數(shù)據(jù),文中有詳細(xì)的代碼講解,具有一定的參考價(jià)值,需要的朋友可以參考下2023-12-12
vue3+vite+ts?通過svg-sprite-loader?插件使用自定義圖標(biāo)的詳細(xì)步驟
這篇文章主要介紹了vue3+vite+ts通過svg-sprite-loader插件使用自定義圖標(biāo),本文分步驟給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09
vue+elementUI的select下拉框回顯為數(shù)字問題
這篇文章主要介紹了vue+elementUI的select下拉框回顯為數(shù)字問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06

