当前位置:首页 > VUE

vue实现table表格分页

2026-01-21 01:39:29VUE

实现基础表格分页

在Vue中实现表格分页需要结合el-tableel-pagination组件(Element UI为例)。以下是一个基础实现方案:

<template>
  <div>
    <el-table :data="currentPageData" border>
      <el-table-column prop="name" label="姓名"></el-table-column>
      <el-table-column prop="age" label="年龄"></el-table-column>
    </el-table>

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

<script>
export default {
  data() {
    return {
      tableData: [], // 全部数据
      currentPageData: [], // 当前页数据
      currentPage: 1,
      pageSize: 5,
      total: 0
    }
  },
  methods: {
    fetchData() {
      // 模拟API请求
      this.tableData = Array.from({length: 23}, (_, i) => ({
        name: `用户${i+1}`,
        age: Math.floor(Math.random() * 30) + 20
      }))
      this.total = this.tableData.length
      this.updatePageData()
    },
    updatePageData() {
      const start = (this.currentPage - 1) * this.pageSize
      const end = start + this.pageSize
      this.currentPageData = this.tableData.slice(start, end)
    },
    handleSizeChange(val) {
      this.pageSize = val
      this.updatePageData()
    },
    handleCurrentChange(val) {
      this.currentPage = val
      this.updatePageData()
    }
  },
  created() {
    this.fetchData()
  }
}
</script>

服务器端分页实现

当数据量较大时,建议采用服务器端分页:

vue实现table表格分页

methods: {
  async fetchData() {
    const res = await axios.get('/api/data', {
      params: {
        page: this.currentPage,
        size: this.pageSize
      }
    })
    this.currentPageData = res.data.list
    this.total = res.data.total
  },
  handleSizeChange(val) {
    this.pageSize = val
    this.fetchData()
  },
  handleCurrentChange(val) {
    this.currentPage = val
    this.fetchData()
  }
}

自定义分页样式

可以通过CSS自定义分页组件样式:

vue实现table表格分页

.el-pagination {
  margin-top: 20px;
  text-align: center;
}
.el-pagination.is-background .el-pager li:not(.disabled).active {
  background-color: #409EFF;
  color: #fff;
}

分页与表格联动优化

添加加载状态提升用户体验:

<el-table v-loading="loading" :data="currentPageData">
  <!-- 表格列定义 -->
</el-table>

<script>
export default {
  data() {
    return {
      loading: false
    }
  },
  methods: {
    async fetchData() {
      this.loading = true
      try {
        // 数据获取逻辑
      } finally {
        this.loading = false
      }
    }
  }
}
</script>

分页缓存策略

对于频繁访问的页面,可以添加缓存机制:

const pageCache = {}
methods: {
  async fetchData() {
    const cacheKey = `${this.currentPage}-${this.pageSize}`
    if (pageCache[cacheKey]) {
      this.currentPageData = pageCache[cacheKey]
      return
    }

    const res = await axios.get('/api/data', {
      params: { page: this.currentPage, size: this.pageSize }
    })

    pageCache[cacheKey] = res.data.list
    this.currentPageData = res.data.list
    this.total = res.data.total
  }
}

以上实现方案可以根据具体项目需求进行调整,如添加排序功能、筛选条件等与分页的联动处理。

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

相关文章

vue实现表格复选

vue实现表格复选

Vue实现表格复选的方法 基础实现 在Vue中实现表格复选功能可以通过v-model绑定复选框的状态,结合v-for循环渲染表格数据。以下是一个基础示例: <template> &…

vue实现页面分页

vue实现页面分页

Vue实现页面分页的方法 使用Element UI的分页组件 Element UI提供了现成的分页组件el-pagination,可以快速实现分页功能。需要先安装Element UI库。 <…

php实现分页

php实现分页

PHP实现分页的基本方法 使用原生PHP实现分页功能需要结合数据库查询和HTML展示。以下是核心实现步骤: 数据库查询与分页逻辑 // 连接数据库 $conn = new mysqli('loca…

vue实现后台分页

vue实现后台分页

实现后台分页的方法 在Vue中实现后台分页通常需要结合前端和后端逻辑,后端负责处理数据分页,前端负责展示分页数据和交互。以下是具体实现方法: 后端API设计 后端需要提供支持分页的API接口,通常包…

表格制作css

表格制作css

基础表格样式 使用CSS可以轻松地为HTML表格添加样式。以下是一个基础表格的HTML和CSS示例: <table class="basic-table"> <thead&g…

css表格表单制作

css表格表单制作

CSS表格制作 使用CSS创建表格主要涉及<table>标签及其子元素的样式控制。以下是一个基础示例: <table class="styled-table"> <…