vue分页如何实现
实现Vue分页的方法
使用Element UI的分页组件
安装Element UI库后,可以直接使用其分页组件。需要在Vue组件中引入el-pagination,并通过v-model绑定当前页码,监听current-change事件处理页码变化。

<template>
<el-pagination
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-size="pageSize"
:total="total"
layout="prev, pager, next">
</el-pagination>
</template>
<script>
export default {
data() {
return {
currentPage: 1,
pageSize: 10,
total: 100
};
},
methods: {
handleCurrentChange(val) {
this.currentPage = val;
this.fetchData();
},
fetchData() {
// 根据currentPage和pageSize请求数据
}
}
};
</script>
手动实现分页逻辑
如果不使用UI库,可以手动实现分页逻辑。通过计算属性对数据进行分片,结合按钮控制页码切换。

<template>
<div>
<ul>
<li v-for="item in paginatedData" :key="item.id">{{ item.name }}</li>
</ul>
<button @click="prevPage" :disabled="currentPage === 1">上一页</button>
<span>{{ currentPage }} / {{ totalPages }}</span>
<button @click="nextPage" :disabled="currentPage === totalPages">下一页</button>
</div>
</template>
<script>
export default {
data() {
return {
data: [], // 原始数据
currentPage: 1,
pageSize: 5
};
},
computed: {
paginatedData() {
const start = (this.currentPage - 1) * this.pageSize;
const end = start + this.pageSize;
return this.data.slice(start, end);
},
totalPages() {
return Math.ceil(this.data.length / this.pageSize);
}
},
methods: {
prevPage() {
if (this.currentPage > 1) this.currentPage--;
},
nextPage() {
if (this.currentPage < this.totalPages) this.currentPage++;
}
}
};
</script>
结合后端API实现分页
实际项目中,分页数据通常由后端提供。前端传递页码和每页条数,后端返回对应数据及总数。
methods: {
async fetchData() {
const res = await axios.get('/api/data', {
params: {
page: this.currentPage,
size: this.pageSize
}
});
this.data = res.data.list;
this.total = res.data.total;
}
}
使用Vue插件
可以使用第三方Vue分页插件如vuejs-paginate,简化分页实现。安装后通过组件快速集成。
<template>
<paginate
:page-count="totalPages"
:click-handler="changePage"
:prev-text="'<'"
:next-text="'>'">
</paginate>
</template>
<script>
import Paginate from 'vuejs-paginate';
export default {
components: { Paginate },
methods: {
changePage(pageNum) {
this.currentPage = pageNum;
}
}
};
</script>
注意事项
- 分页组件需与数据加载逻辑配合,确保页码变化时触发数据更新。
- 对于大数据量,建议采用后端分页以减少前端性能压力。
- 分页样式可根据项目需求自定义,或直接使用UI库提供的样式。






