当前位置:首页 > VUE

vue 实现翻页表

2026-03-08 22:27:54VUE

基础翻页表格实现

使用el-tableel-pagination组件实现翻页表格功能。需要在Vue项目中安装Element UI库。

<template>
  <div>
    <el-table :data="tableData" border style="width: 100%">
      <el-table-column prop="date" label="日期" width="180"></el-table-column>
      <el-table-column prop="name" label="姓名" width="180"></el-table-column>
      <el-table-column prop="address" label="地址"></el-table-column>
    </el-table>

    <el-pagination
      @size-change="handleSizeChange"
      @current-change="handleCurrentChange"
      :current-page="currentPage"
      :page-sizes="[10, 20, 30, 40]"
      :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 mockData = []
      const start = (this.currentPage - 1) * this.pageSize

      for(let i = 0; i < this.pageSize; i++) {
        mockData.push({
          date: `2023-01-${start + i + 1}`,
          name: `用户${start + i}`,
          address: `地址${start + i}`
        })
      }

      this.tableData = mockData
      this.total = 100 // 模拟总数据量
    }
  },
  created() {
    this.fetchData()
  }
}
</script>

后端分页集成

实际项目中通常需要从后端API获取分页数据。以下是与后端API集成的示例:

methods: {
  async fetchData() {
    try {
      const params = {
        page: this.currentPage,
        size: this.pageSize
      }

      const response = await axios.get('/api/data', { params })
      this.tableData = response.data.items
      this.total = response.data.total
    } catch (error) {
      console.error('获取数据失败:', error)
    }
  }
}

自定义分页样式

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

<style scoped>
.el-pagination {
  margin-top: 20px;
  text-align: right;
}

.el-pagination.is-background .btn-next,
.el-pagination.is-background .btn-prev,
.el-pagination.is-background .el-pager li {
  background-color: #f4f4f5;
  color: #606266;
}

.el-pagination.is-background .el-pager li:not(.disabled).active {
  background-color: #409EFF;
  color: #FFF;
}
</style>

性能优化技巧

对于大数据量的表格,可以使用虚拟滚动提高性能。Element Plus提供了虚拟滚动表格组件:

<el-table-v2
  :columns="columns"
  :data="tableData"
  :width="700"
  :height="400"
  :row-height="50"
  fixed
/>

高级功能实现

添加表格排序和筛选功能:

<el-table-column
  prop="date"
  label="日期"
  width="180"
  sortable
  :filters="[
    { text: '2023-01-01', value: '2023-01-01' },
    { text: '2023-01-02', value: '2023-01-02' }
  ]"
  :filter-method="filterHandler">
</el-table-column>

对应的处理方法:

vue 实现翻页表

methods: {
  filterHandler(value, row, column) {
    return row.date === value
  }
}

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

相关文章

vue实现导航切换内容

vue实现导航切换内容

Vue实现导航切换内容的方法 在Vue中实现导航切换内容,可以通过以下方式实现: 使用动态组件 动态组件通过<component :is="currentComponent">实现内容切…

vue实现主题

vue实现主题

Vue 实现主题的方法 使用 CSS 变量动态切换主题 定义全局 CSS 变量,通过修改这些变量实现主题切换。在 Vue 的根组件或全局样式中定义变量: :root { --primary-co…

vue实现tree

vue实现tree

Vue 实现 Tree 组件 使用 Vue 实现 Tree 组件可以通过递归组件的方式来实现层级结构展示。以下是一个完整的实现方法: 基础递归组件实现 创建 Tree 组件文件 Tree.vue,使…

vue实现ppt

vue实现ppt

Vue 实现 PPT 的功能 Vue 可以结合第三方库或自定义组件实现类似 PPT 的演示效果。以下是几种常见的方法: 使用第三方库 reveal.js reveal.js 是一个流行的演示框架,支…

vue拖动实现

vue拖动实现

实现 Vue 拖动功能的方法 使用 HTML5 拖放 API 在 Vue 中可以利用 HTML5 的原生拖放 API 实现拖动功能。通过 draggable 属性标记可拖动元素,结合 @dragsta…

vue 实现登录

vue 实现登录

Vue 实现登录功能 创建登录表单组件 在 Vue 项目中创建一个登录表单组件(如 Login.vue),包含用户名和密码输入框以及提交按钮。使用 v-model 实现双向数据绑定。 <tem…