当前位置:首页 > 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的<component :is="currentTab">动态加载不同组件,结合v-for循环渲染选项卡标题,点击时切换curr…

vue实现表格

vue实现表格

Vue实现表格的方法 在Vue中实现表格可以通过多种方式完成,包括使用原生HTML表格、第三方组件库或自定义组件。以下是几种常见的方法: 使用原生HTML表格 在Vue模板中直接使用HTML的…

vue搜索过后实现分页

vue搜索过后实现分页

实现 Vue 搜索后分页的方法 数据绑定与搜索逻辑 在 Vue 组件中定义数据属性,包括原始数据列表、搜索关键词、分页相关参数: data() { return { originalL…

vue组件传值实现分页

vue组件传值实现分页

Vue组件传值实现分页的方法 在Vue中实现分页功能,通常需要父子组件之间的数据传递。以下是几种常见的传值方式: 使用props传递数据 父组件通过props向子组件传递当前页码和总页数等分页信息…

css 制作表格

css 制作表格

CSS 制作表格的方法 使用 CSS 制作表格可以通过多种方式实现,包括原生 HTML 表格样式、Flexbox 布局或 Grid 布局。以下是几种常见的方法: 原生 HTML 表格样式 HTML…

h5实现左右分页

h5实现左右分页

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