vue实现分页可以跳转
Vue 实现分页跳转功能
在 Vue 中实现分页跳转功能通常需要结合分页组件和路由管理。以下是几种常见的实现方式:
使用 Element UI 分页组件
Element UI 提供了现成的分页组件 el-pagination,支持跳转功能:
<template>
<el-pagination
:current-page="currentPage"
:page-size="pageSize"
:total="total"
layout="prev, pager, next, jumper"
@current-change="handleCurrentChange"
/>
</template>
<script>
export default {
data() {
return {
currentPage: 1,
pageSize: 10,
total: 100
}
},
methods: {
handleCurrentChange(val) {
this.currentPage = val
// 加载对应页的数据
this.loadData()
},
loadData() {
// 根据 currentPage 和 pageSize 请求数据
}
}
}
</script>
layout属性中的jumper启用跳转输入框。@current-change监听页码变化。
自定义分页组件
如果需要完全自定义分页逻辑,可以手动实现跳转功能:
<template>
<div class="pagination">
<input v-model="jumpPage" type="number" min="1" :max="totalPages" />
<button @click="handleJump">跳转</button>
</div>
</template>
<script>
export default {
props: ['currentPage', 'totalPages'],
data() {
return {
jumpPage: this.currentPage
}
},
methods: {
handleJump() {
if (this.jumpPage >= 1 && this.jumpPage <= this.totalPages) {
this.$emit('page-change', parseInt(this.jumpPage))
}
}
}
}
</script>
- 通过
v-model绑定跳转页码输入框。 - 点击跳转按钮时触发
page-change事件。
结合路由实现分页跳转
如果需要通过 URL 参数保存当前页码:
// 路由配置
{
path: '/list/:page',
component: List
}
<template>
<el-pagination
:current-page="parseInt($route.params.page)"
@current-change="handlePageChange"
/>
</template>
<script>
export default {
methods: {
handlePageChange(page) {
this.$router.push(`/list/${page}`)
}
}
}
</script>
- 通过路由参数
:page保存当前页码。 - 切换页码时更新路由。
注意事项
- 跳转输入框需要验证页码范围,避免超出总页数。
- 分页数据加载建议使用防抖或节流优化性能。
- 如果使用后端分页,跳转时需要重新请求对应页的数据。
以上方法可以根据实际项目需求选择或组合使用。Element UI 的方案适合快速开发,自定义组件适合需要高度定制的场景,路由集成适合需要 URL 可分享的分页需求。







