vue elementui实现分页
使用 Element UI 实现 Vue 分页功能
Element UI 提供了 el-pagination 组件,可以轻松实现分页功能。以下是一个完整的实现示例:
<template>
<div>
<el-table :data="tableData" 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
}
},
created() {
this.fetchData()
},
methods: {
fetchData() {
// 模拟API请求
const mockData = []
for (let i = 0; i < 100; i++) {
mockData.push({
date: `2023-01-${i + 1}`,
name: `用户${i + 1}`,
address: `地址${i + 1}`
})
}
// 分页处理
const start = (this.currentPage - 1) * this.pageSize
const end = start + this.pageSize
this.tableData = mockData.slice(start, end)
this.total = mockData.length
},
handleSizeChange(val) {
this.pageSize = val
this.fetchData()
},
handleCurrentChange(val) {
this.currentPage = val
this.fetchData()
}
}
}
</script>
关键配置项说明
el-pagination 组件的主要属性:
current-page: 当前页码page-size: 每页显示条目数total: 总条目数page-sizes: 每页显示个数选择器的选项设置layout: 组件布局,可以设置分页器的显示内容
与后端API配合
实际项目中,分页通常需要与后端API配合:
async fetchData() {
try {
const response = await axios.get('/api/data', {
params: {
page: this.currentPage,
pageSize: this.pageSize
}
})
this.tableData = response.data.list
this.total = response.data.total
} catch (error) {
console.error(error)
}
}
自定义样式
可以通过CSS自定义分页样式:
.el-pagination {
margin-top: 20px;
text-align: center;
}
.el-pagination.is-background .btn-next,
.el-pagination.is-background .btn-prev,
.el-pagination.is-background .el-pager li {
background-color: #f4f4f5;
color: #606266;
}
注意事项
确保在Vue项目中已正确安装Element UI:
npm install element-ui
并在main.js中引入:

import Vue from 'vue'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
Vue.use(ElementUI)






