vue实现分页请求
Vue 实现分页请求的方法
在 Vue 中实现分页请求通常需要结合前端分页逻辑和后端 API 支持。以下是几种常见的实现方式:
使用 axios 发送分页请求
安装 axios 并配置分页参数:

npm install axios
在 Vue 组件中实现分页请求:
<template>
<div>
<table>
<!-- 数据展示 -->
</table>
<div class="pagination">
<button @click="prevPage">上一页</button>
<span>当前页: {{ currentPage }}</span>
<button @click="nextPage">下一页</button>
</div>
</div>
</template>
<script>
import axios from 'axios';
export default {
data() {
return {
items: [],
currentPage: 1,
pageSize: 10,
totalItems: 0
};
},
methods: {
fetchData() {
axios.get('/api/items', {
params: {
page: this.currentPage,
size: this.pageSize
}
}).then(response => {
this.items = response.data.items;
this.totalItems = response.data.total;
});
},
nextPage() {
if (this.currentPage * this.pageSize < this.totalItems) {
this.currentPage++;
this.fetchData();
}
},
prevPage() {
if (this.currentPage > 1) {
this.currentPage--;
this.fetchData();
}
}
},
created() {
this.fetchData();
}
};
</script>
使用 Element UI 的分页组件
安装 Element UI:

npm install element-ui
实现带分页的表格:
<template>
<div>
<el-table :data="items">
<!-- 表格列定义 -->
</el-table>
<el-pagination
@current-change="handlePageChange"
:current-page="currentPage"
:page-size="pageSize"
:total="totalItems"
layout="prev, pager, next">
</el-pagination>
</div>
</template>
<script>
import { Table, Pagination } from 'element-ui';
export default {
components: {
'el-table': Table,
'el-pagination': Pagination
},
data() {
return {
items: [],
currentPage: 1,
pageSize: 10,
totalItems: 0
};
},
methods: {
fetchData() {
// 同axios示例
},
handlePageChange(page) {
this.currentPage = page;
this.fetchData();
}
},
created() {
this.fetchData();
}
};
</script>
前端本地分页处理
对于少量数据,可以在前端实现分页:
<template>
<!-- 同前 -->
</template>
<script>
export default {
data() {
return {
allItems: [],
displayedItems: [],
currentPage: 1,
pageSize: 10
};
},
computed: {
totalPages() {
return Math.ceil(this.allItems.length / this.pageSize);
}
},
methods: {
updateDisplayedItems() {
const start = (this.currentPage - 1) * this.pageSize;
const end = start + this.pageSize;
this.displayedItems = this.allItems.slice(start, end);
},
fetchAllData() {
// 获取所有数据
axios.get('/api/all-items').then(response => {
this.allItems = response.data;
this.updateDisplayedItems();
});
}
},
created() {
this.fetchAllData();
}
};
</script>
注意事项
- 后端 API 需要支持分页参数,通常包括 page(页码) 和 size(每页数量)
- 分页组件需要处理边界情况,如第一页和最后一页
- 考虑添加加载状态提示,改善用户体验
- 对于大数据量,建议使用服务器端分页而非前端分页
- 可以添加每页显示数量选择器,让用户自定义 pageSize
以上方法可以根据具体项目需求选择或组合使用,实现适合业务场景的分页功能。






