vue实现换页功能
Vue实现分页功能的方法
使用第三方库(如Element UI)
Element UI提供了现成的分页组件el-pagination,可直接集成到Vue项目中。安装Element UI后,在组件中引入分页组件并配置相关属性:

<template>
<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>
</template>
<script>
export default {
data() {
return {
currentPage: 1,
pageSize: 10,
total: 100
};
},
methods: {
handleSizeChange(val) {
this.pageSize = val;
this.fetchData();
},
handleCurrentChange(val) {
this.currentPage = val;
this.fetchData();
},
fetchData() {
// 根据currentPage和pageSize获取数据
}
}
};
</script>
自定义分页组件
若需完全自定义分页逻辑,可通过计算属性动态分割数据。假设有一个数据数组items,可通过计算属性返回当前页的数据:
<template>
<div>
<ul>
<li v-for="item in paginatedItems" :key="item.id">{{ item.name }}</li>
</ul>
<div class="pagination">
<button @click="prevPage" :disabled="currentPage === 1">上一页</button>
<span>{{ currentPage }} / {{ totalPages }}</span>
<button @click="nextPage" :disabled="currentPage === totalPages">下一页</button>
</div>
</div>
</template>
<script>
export default {
props: ['items', 'itemsPerPage'],
data() {
return {
currentPage: 1
};
},
computed: {
totalPages() {
return Math.ceil(this.items.length / this.itemsPerPage);
},
paginatedItems() {
const start = (this.currentPage - 1) * this.itemsPerPage;
const end = start + this.itemsPerPage;
return this.items.slice(start, end);
}
},
methods: {
prevPage() {
if (this.currentPage > 1) this.currentPage--;
},
nextPage() {
if (this.currentPage < this.totalPages) this.currentPage++;
}
}
};
</script>
结合后端API分页
实际项目中,分页数据通常由后端接口返回。通过传递page和pageSize参数获取对应数据:
methods: {
async fetchData() {
const res = await axios.get('/api/items', {
params: {
page: this.currentPage,
pageSize: this.pageSize
}
});
this.items = res.data.items;
this.total = res.data.total;
}
}
关键点总结
- 分页参数:需明确
currentPage(当前页)和pageSize(每页条数)。 - 数据分割:前端分页使用
slice方法,后端分页通过API参数传递。 - 事件处理:监听页码变化事件(如
@current-change)并重新获取数据。 - 样式定制:可通过CSS覆盖第三方组件样式或完全自定义UI。
以上方法可根据项目需求选择,第三方库适合快速开发,自定义组件灵活性更高,后端分页适用于大数据量场景。







