当前位置:首页 > VUE

vue实现分页表

2026-02-18 05:15:38VUE

Vue实现分页表格的方法

使用Element UI的分页组件

安装Element UI库后,可以通过el-tableel-pagination组件快速实现分页表格功能。

vue实现分页表

<template>
  <div>
    <el-table :data="tableData" border>
      <el-table-column prop="date" label="日期"></el-table-column>
      <el-table-column prop="name" label="姓名"></el-table-column>
    </el-table>

    <el-pagination
      @size-change="handleSizeChange"
      @current-change="handleCurrentChange"
      :current-page="currentPage"
      :page-sizes="[10, 20, 30]"
      :page-size="pageSize"
      layout="total, sizes, prev, pager, next, jumper"
      :total="total">
    </el-pagination>
  </div>
</template>

<script>
export default {
  data() {
    return {
      tableData: [],
      currentPage: 1,
      pageSize: 10,
      total: 0
    }
  },
  methods: {
    handleSizeChange(val) {
      this.pageSize = val
      this.fetchData()
    },
    handleCurrentChange(val) {
      this.currentPage = val
      this.fetchData()
    },
    fetchData() {
      // 模拟API请求
      const start = (this.currentPage - 1) * this.pageSize
      const end = start + this.pageSize
      this.tableData = mockData.slice(start, end)
      this.total = mockData.length
    }
  },
  created() {
    this.fetchData()
  }
}
</script>

自定义分页实现

如果不使用UI库,可以手动实现分页逻辑。

vue实现分页表

<template>
  <div>
    <table>
      <tr v-for="item in paginatedData" :key="item.id">
        <td>{{ item.name }}</td>
      </tr>
    </table>

    <button @click="prevPage" :disabled="currentPage === 1">上一页</button>
    <span>第{{ currentPage }}页</span>
    <button @click="nextPage" :disabled="currentPage >= totalPages">下一页</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      allData: [],
      currentPage: 1,
      pageSize: 5
    }
  },
  computed: {
    totalPages() {
      return Math.ceil(this.allData.length / this.pageSize)
    },
    paginatedData() {
      const start = (this.currentPage - 1) * this.pageSize
      const end = start + this.pageSize
      return this.allData.slice(start, end)
    }
  },
  methods: {
    prevPage() {
      this.currentPage--
    },
    nextPage() {
      this.currentPage++
    }
  },
  created() {
    // 获取数据
    this.allData = [...]
  }
}
</script>

结合后端API的分页实现

实际项目中通常需要从后端获取分页数据。

methods: {
  async fetchData() {
    try {
      const res = await axios.get('/api/data', {
        params: {
          page: this.currentPage,
          size: this.pageSize
        }
      })
      this.tableData = res.data.items
      this.total = res.data.total
    } catch (error) {
      console.error(error)
    }
  }
}

分页器样式自定义

可以通过CSS对分页组件进行样式调整。

.el-pagination {
  margin-top: 20px;
  text-align: center;
}

这些方法提供了从简单到复杂的Vue分页表格实现方案,可根据项目需求选择合适的实现方式。

标签: 分页vue
分享给朋友:

相关文章

vue设计与实现下载

vue设计与实现下载

vue设计与实现电子书下载 《Vue.js设计与实现》是一本深入解析Vue.js框架原理的书籍,由霍春阳(HcySunYang)撰写。以下是获取该资源的常见途径: 正版购买渠道 京东、当当、天猫等…

vue实现ajax

vue实现ajax

Vue 中实现 AJAX 的几种方法 在 Vue 中实现 AJAX 请求可以通过原生 JavaScript 的 XMLHttpRequest、第三方库如 axios 或 fetch API 来完成。以…

vue实现曲线

vue实现曲线

Vue 实现曲线的方法 在 Vue 中实现曲线可以通过多种方式,包括使用 SVG、Canvas 或第三方库如 D3.js、ECharts 等。以下是几种常见的方法: 使用 SVG 绘制曲线 SVG…

vue实现秒表

vue实现秒表

实现秒表功能 在Vue中实现秒表功能需要处理时间显示、开始、暂停和重置逻辑。以下是具体实现方式: 基础实现代码 <template> <div> <div&…

vue打包实现推送

vue打包实现推送

Vue 项目打包与自动化部署推送 打包 Vue 项目 使用以下命令生成生产环境代码,默认输出到 dist 目录: npm run build 配置自动化推送(以 GitHub Pages 为例)…

vue如何实现分离

vue如何实现分离

Vue 实现组件分离的方法 Vue 可以通过多种方式实现组件分离,提升代码的可维护性和复用性。以下是几种常见的方法: 单文件组件 (SFC) Vue 的单文件组件(.vue 文件)将模板、脚本和样式…