vue 实现翻页表
基础翻页表格实现
使用el-table和el-pagination组件实现翻页表格功能。需要在Vue项目中安装Element UI库。
<template>
<div>
<el-table :data="tableData" border style="width: 100%">
<el-table-column prop="date" label="日期" width="180"></el-table-column>
<el-table-column prop="name" label="姓名" width="180"></el-table-column>
<el-table-column prop="address" label="地址"></el-table-column>
</el-table>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[10, 20, 30, 40]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
</template>
<script>
export default {
data() {
return {
tableData: [],
currentPage: 1,
pageSize: 10,
total: 0
}
},
methods: {
handleSizeChange(val) {
this.pageSize = val
this.fetchData()
},
handleCurrentChange(val) {
this.currentPage = val
this.fetchData()
},
fetchData() {
// 模拟API请求
const mockData = []
const start = (this.currentPage - 1) * this.pageSize
for(let i = 0; i < this.pageSize; i++) {
mockData.push({
date: `2023-01-${start + i + 1}`,
name: `用户${start + i}`,
address: `地址${start + i}`
})
}
this.tableData = mockData
this.total = 100 // 模拟总数据量
}
},
created() {
this.fetchData()
}
}
</script>
后端分页集成
实际项目中通常需要从后端API获取分页数据。以下是与后端API集成的示例:

methods: {
async fetchData() {
try {
const params = {
page: this.currentPage,
size: this.pageSize
}
const response = await axios.get('/api/data', { params })
this.tableData = response.data.items
this.total = response.data.total
} catch (error) {
console.error('获取数据失败:', error)
}
}
}
自定义分页样式
可以通过CSS自定义分页组件的样式:
<style scoped>
.el-pagination {
margin-top: 20px;
text-align: right;
}
.el-pagination.is-background .btn-next,
.el-pagination.is-background .btn-prev,
.el-pagination.is-background .el-pager li {
background-color: #f4f4f5;
color: #606266;
}
.el-pagination.is-background .el-pager li:not(.disabled).active {
background-color: #409EFF;
color: #FFF;
}
</style>
性能优化技巧
对于大数据量的表格,可以使用虚拟滚动提高性能。Element Plus提供了虚拟滚动表格组件:

<el-table-v2
:columns="columns"
:data="tableData"
:width="700"
:height="400"
:row-height="50"
fixed
/>
高级功能实现
添加表格排序和筛选功能:
<el-table-column
prop="date"
label="日期"
width="180"
sortable
:filters="[
{ text: '2023-01-01', value: '2023-01-01' },
{ text: '2023-01-02', value: '2023-01-02' }
]"
:filter-method="filterHandler">
</el-table-column>
对应的处理方法:
methods: {
filterHandler(value, row, column) {
return row.date === value
}
}






