当前位置:首页 > VUE

vue手动实现分页表格

2026-02-20 18:01:40VUE

手动实现分页表格的核心逻辑

分页功能需要结合前端分页逻辑与表格渲染,通过计算当前页数据范围实现。Vue中可通过计算属性动态分割数据。

基础数据结构

定义表格数据源和分页参数:

data() {
  return {
    tableData: [],      // 全部数据
    currentPage: 1,     // 当前页码
    pageSize: 10,       // 每页条数
    total: 0            // 总数据量
  }
}

计算当前页数据

使用计算属性筛选当前页数据:

vue手动实现分页表格

computed: {
  paginatedData() {
    const start = (this.currentPage - 1) * this.pageSize
    const end = start + this.pageSize
    return this.tableData.slice(start, end)
  }
}

模板渲染部分

表格与分页器组合:

<template>
  <div>
    <table>
      <tr v-for="(item, index) in paginatedData" :key="index">
        <!-- 表格内容渲染 -->
      </tr>
    </table>

    <div class="pagination">
      <button 
        @click="currentPage--" 
        :disabled="currentPage === 1">
        上一页
      </button>
      <span>第{{ currentPage }}页</span>
      <button 
        @click="currentPage++" 
        :disabled="currentPage >= Math.ceil(total / pageSize)">
        下一页
      </button>
    </div>
  </div>
</template>

分页逻辑优化

添加总页数计算和页码跳转:

vue手动实现分页表格

methods: {
  goToPage(page) {
    if (page >= 1 && page <= this.totalPages) {
      this.currentPage = page
    }
  }
},
computed: {
  totalPages() {
    return Math.ceil(this.total / this.pageSize)
  }
}

样式增强示例

基础分页样式:

.pagination {
  margin-top: 20px;
  display: flex;
  gap: 10px;
  align-items: center;
}
button:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

完整组件示例

组合所有功能:

export default {
  data() {
    return {
      tableData: Array.from({length: 100}, (_,i) => ({ id: i+1 })),
      currentPage: 1,
      pageSize: 10
    }
  },
  computed: {
    total() {
      return this.tableData.length
    },
    paginatedData() {
      const start = (this.currentPage - 1) * this.pageSize
      return this.tableData.slice(start, start + this.pageSize)
    }
  }
}

注意事项

  • 大数据量时建议后端分页
  • 可结合v-model实现动态页码切换
  • 复杂场景可使用第三方分页组件如el-pagination

标签: 分页表格
分享给朋友:

相关文章

如何实现vue表格联动

如何实现vue表格联动

实现 Vue 表格联动的方法 数据绑定与响应式更新 通过 Vue 的响应式特性,将多个表格的数据绑定到同一个数据源或计算属性。当一个表格的数据发生变化时,另一个表格会自动更新。例如: data()…

国外vue实现表格控件

国外vue实现表格控件

以下是国外流行的 Vue 表格控件实现方案及特点,供参考: vue-good-table 基于 Vue 2/3 的轻量级表格组件,支持排序、分页、筛选等功能。 安装方式: npm instal…

uniapp 分页组件

uniapp 分页组件

uniapp 分页组件实现方法 在uniapp中实现分页功能,可以通过自定义组件或使用第三方组件库完成。以下是几种常见实现方式: 自定义分页组件 创建一个名为uni-pagination的组件,模板…

uniapp 表格导入

uniapp 表格导入

uniapp 表格导入的实现方法 使用 uni.chooseFile 选择文件 在 uniapp 中,可以通过 uni.chooseFile API 让用户选择本地文件。该 API 支持多平台,包括…

vue实现表格导入

vue实现表格导入

Vue 实现表格导入的方法 使用 Element UI 的 Upload 组件 Element UI 提供了 el-upload 组件,可以方便地实现文件上传功能。结合 xlsx 库解析 Excel…

vue elementui实现分页

vue elementui实现分页

Vue + ElementUI 分页实现方法 安装与引入 确保已安装 ElementUI,可通过 npm 或 yarn 安装: npm install element-ui 在 main.js 中全…