当前位置:首页 > VUE

vue手动实现分页表格

2026-02-20 18:01:40VUE

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

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

基础数据结构

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

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

计算当前页数据

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

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>

分页逻辑优化

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

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;
}

完整组件示例

组合所有功能:

vue手动实现分页表格

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

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

相关文章

制作css表格

制作css表格

基础CSS表格结构 使用HTML的<table>标签创建表格骨架,搭配CSS控制样式。以下是一个基础示例: <table class="styled-table"> &l…

vue实现下拉分页思想

vue实现下拉分页思想

实现下拉分页的基本思想 下拉分页(Infinite Scroll)是一种常见的分页加载方式,当用户滚动到页面底部时自动加载下一页数据。Vue 中可以通过监听滚动事件或使用第三方库实现。 监听滚动事件…

react 如何分页

react 如何分页

分页实现方法 在React中实现分页功能可以通过多种方式完成,具体取决于数据来源(如API或本地数据)和UI库的选择。以下是常见的实现方法: 使用本地数据分页 对于存储在组件状态或Context中…

h5实现左右分页

h5实现左右分页

实现左右分页的HTML5方法 在HTML5中实现左右分页效果可以通过多种方式完成,以下是几种常见的方法: 使用CSS Flexbox布局 Flexbox是一种现代的布局方式,可以轻松实现左右分页效果…

jquery分页

jquery分页

jQuery分页的实现方法 jQuery分页可以通过多种方式实现,以下是几种常见的方法: 使用插件实现分页 jQuery有许多优秀的分页插件,如jQuery Pagination、DataTabl…

vue实现简单表格

vue实现简单表格

使用 Vue 实现简单表格 Vue 提供了多种方式实现表格功能,以下是基于 Vue 3 的两种常见方法: 基础表格实现 通过 v-for 指令循环渲染表格数据: <template&…