“每天3分钟,她的腰围瘦了15厘米“ 实现前端分页功能的方法

实现前端分页功能的方法

定义分页参数与数据存储
在Vue3的<script setup>或组件选项中,定义分页相关参数和数据容器:

const queryParams = ref({
  model_name: undefined,  // 搜索条件字段
  api_key: undefined,
  page: 1,               // 当前页码
  page_size: 10          // 每页条数
})
const allDataList = ref([])  // 原始数据集合
const tableList = ref([])    // 当前页渲染数据

分页逻辑实现
通过计算起始索引实现数据切片:

function ### 完善分页处理方法

在现有代码基础上,需要确保`handlePagination()`方法正确处理分页逻辑。以下是改进建议:

```javascript
function handlePagination() {
  const { pageNum, pageSize } = queryParams.value
  const startIndex = (pageNum - 1) * pageSize
  const endIndex = pageNum * pageSize
  
  // 切片获取当前页数据
  tableData.value = allDataList.value.slice(startIndex, endIndex)
}

添加分页参数初始化

确保查询参数包含必要的分页字段:

const queryParams = ref({
  pageNum: 1,
  pageSize: 10,
  // 其他查询条件...
})

处理页码改变事件

添加分页组件事件处理方法:

function handlePageChange(newPage) {
  queryParams.value.pageNum = newPage
  handlePagination()
}

处理每页条数改变事件

function handleSizeChange(newSize) {
  queryParams.value.pageSize = newSize
  queryParams.value.pageNum = 1  // 重置到第一页
  handlePagination()
}

完整示例模板

/** 查询大模型限流列表 */
function getList() {
  loading.value = true
  
  listModelRateLimit(queryParams.value).then(res => {
    if(res.code === 200){
      allDataList.value = res.data
      total.value = allDataList.value.length
      handlePagination()
    }
  }).catch(err => {
    proxy.$modal.msgError(err.msg || '查询失败')
  }).finally(() => {
    loading.value = false
  })
}

注意事项

确保组件模板中包含分页控件并绑定相应事件:

<el-pagination
  @current-change="handlePageChange"
  @size-change="handleSizeChange"
  :current-page="queryParams.pageNum"
  :page-sizes="[10, 20, 50, 100]"
  :page-size="queryParams.pageSize"
  layout="total, sizes, prev, pager, next"
  :total="total">
</el-pagination>

数据变化时如需重新分页,可直接调用handlePagination()方法。

注意事项

  • 数据加载后需手动触发handlePagination初始化显示
  • allDataList发生变化时应重新执行分页计算
  • 分页组件的layout属性可自定义显示元素(如prev, pager, next

该方案通过纯前端计算实现分页,适合数据量较小且无需后端分页的场景。实际开发中可根据需求选择将pagepage_size作为API请求参数实现后端分页。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值