当前位置:首页 > VUE

vue实现表格分页

2026-02-19 08:29:15VUE

实现表格分页的基础方法

在Vue中实现表格分页通常需要结合数据分片和分页组件。基本思路是将数据按页分割,通过计算属性或方法动态获取当前页的数据。

模板部分示例:

<template>
  <div>
    <table>
      <thead>
        <tr>
          <th v-for="col in columns" :key="col">{{ col }}</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="item in paginatedData" :key="item.id">
          <td v-for="col in columns" :key="col">{{ item[col] }}</td>
        </tr>
      </tbody>
    </table>
    <div class="pagination">
      <button @click="prevPage" :disabled="currentPage === 1">上一页</button>
      <span>第 {{ currentPage }} 页 / 共 {{ totalPages }} 页</span>
      <button @click="nextPage" :disabled="currentPage === totalPages">下一页</button>
    </div>
  </div>
</template>

脚本部分示例:

export default {
  data() {
    return {
      data: [], // 全部数据
      columns: [], // 表头列名
      currentPage: 1,
      pageSize: 10
    }
  },
  computed: {
    totalPages() {
      return Math.ceil(this.data.length / this.pageSize)
    },
    paginatedData() {
      const start = (this.currentPage - 1) * this.pageSize
      const end = start + this.pageSize
      return this.data.slice(start, end)
    }
  },
  methods: {
    nextPage() {
      if (this.currentPage < this.totalPages) {
        this.currentPage++
      }
    },
    prevPage() {
      if (this.currentPage > 1) {
        this.currentPage--
      }
    }
  }
}

使用第三方分页组件

Element UI和Ant Design Vue等UI库提供了现成的分页组件,可以简化实现过程。

Element UI示例:

<template>
  <el-table :data="paginatedData">
    <el-table-column v-for="col in columns" :key="col" :prop="col" :label="col"></el-table-column>
  </el-table>
  <el-pagination
    @current-change="handleCurrentChange"
    :current-page="currentPage"
    :page-size="pageSize"
    :total="data.length">
  </el-pagination>
</template>

<script>
export default {
  methods: {
    handleCurrentChange(val) {
      this.currentPage = val
    }
  }
}
</script>

服务器端分页实现

当数据量很大时,应该采用服务器端分页,只请求当前页的数据。

Axios请求示例:

export default {
  methods: {
    fetchData(page = 1) {
      axios.get('/api/data', {
        params: {
          page,
          size: this.pageSize
        }
      }).then(response => {
        this.data = response.data.items
        this.total = response.data.total
      })
    }
  },
  created() {
    this.fetchData()
  }
}

分页功能优化

添加页面大小选择器,允许用户自定义每页显示数量。

<select v-model="pageSize" @change="currentPage = 1">
  <option value="5">5条/页</option>
  <option value="10">10条/页</option>
  <option value="20">20条/页</option>
</select>

分页样式美化

使用CSS为分页控件添加基本样式:

vue实现表格分页

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

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

相关文章

分页实现vue

分页实现vue

分页实现(Vue) 在Vue中实现分页功能通常需要结合前端分页逻辑和后端API支持。以下是两种常见的实现方式: 前端分页实现 适用于数据量较小的情况,直接在客户端完成分页逻辑。 <templ…

表格tb制作css

表格tb制作css

使用CSS美化HTML表格 通过CSS可以自定义表格样式,使其更美观和符合设计需求。以下是一些常用方法: 基础表格样式 table { width: 100%; border-collap…

vue实现重置表格数据

vue实现重置表格数据

重置表格数据的方法 在Vue中重置表格数据通常涉及清空或重新初始化数据绑定的数组或对象。以下是几种常见实现方式: 直接重置数据源 对于基于数组的表格数据,可以直接将数据数组重置为空或初始值:…

vue  实现分页

vue 实现分页

实现分页功能 在Vue中实现分页功能通常需要结合后端API或前端数据处理。以下是两种常见的实现方式: 前端分页实现 适用于数据量较小的情况,所有数据一次性加载到前端后进行分页处理: <tem…

vue router实现分页

vue router实现分页

使用 Vue Router 实现分页 在 Vue.js 项目中,可以通过 Vue Router 结合分页组件实现分页功能。以下是实现分页的几种方法: 使用路由参数传递页码 在路由配置中定义一个动态参…

css制作表格

css制作表格

CSS 制作表格的方法 使用 CSS 可以灵活地创建和样式化表格,以下是几种常见的方法: 使用 HTML 表格标签结合 CSS 样式 通过 HTML 的 <table>、<tr&g…