当前位置:首页 > VUE

vue实现数据分页

2026-02-18 22:41:30VUE

Vue 实现数据分页的方法

使用计算属性分页

通过计算属性对数据进行切片处理,结合当前页码和每页条数动态计算显示范围:

data() {
  return {
    currentPage: 1,
    itemsPerPage: 10,
    allItems: [...] // 完整数据源
  }
},
computed: {
  paginatedItems() {
    const start = (this.currentPage - 1) * this.itemsPerPage
    const end = start + this.itemsPerPage
    return this.allItems.slice(start, end)
  },
  totalPages() {
    return Math.ceil(this.allItems.length / this.itemsPerPage)
  }
}

使用第三方库

安装分页专用库如vuejs-paginate

npm install vuejs-paginate

组件中使用:

import Paginate from 'vuejs-paginate'

export default {
  components: { Paginate },
  methods: {
    changePage(pageNum) {
      this.currentPage = pageNum
    }
  }
}

模板部分:

<paginate
  :page-count="totalPages"
  :click-handler="changePage"
  :container-class="'pagination'"
></paginate>

服务端分页

当数据量较大时,建议采用API分页查询:

methods: {
  async fetchPage(page) {
    const res = await axios.get(`/api/items?page=${page}&limit=10`)
    this.paginatedItems = res.data.items
    this.totalCount = res.data.total
  }
}

完整组件示例

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

    <div class="pagination">
      <button 
        v-for="page in totalPages" 
        :key="page"
        @click="currentPage = page"
        :class="{ active: currentPage === page }"
      >
        {{ page }}
      </button>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      currentPage: 1,
      itemsPerPage: 5,
      allItems: [
        // 示例数据
        {id: 1, name: 'Item 1'},
        {id: 2, name: 'Item 2'},
        // ...更多数据
      ]
    }
  },
  computed: {
    paginatedItems() {
      const start = (this.currentPage - 1) * this.itemsPerPage
      const end = start + this.itemsPerPage
      return this.allItems.slice(start, end)
    },
    totalPages() {
      return Math.ceil(this.allItems.length / this.itemsPerPage)
    }
  }
}
</script>

<style>
.pagination button {
  margin: 0 5px;
}
.pagination button.active {
  font-weight: bold;
  color: blue;
}
</style>

动态每页条数

添加选择器允许用户调整每页显示数量:

<select v-model="itemsPerPage">
  <option value="5">5 per page</option>
  <option value="10">10 per page</option>
  <option value="20">20 per page</option>
</select>

性能优化建议

对于超大数据集(超过10万条),推荐:

  • 使用虚拟滚动代替分页(如vue-virtual-scroller)
  • 实现服务端分页+前端缓存
  • 添加加载状态和错误处理
data() {
  return {
    isLoading: false,
    error: null
  }
},
methods: {
  async loadPage(page) {
    try {
      this.isLoading = true
      const data = await fetchPageData(page)
      // 更新数据
    } catch (err) {
      this.error = err.message
    } finally {
      this.isLoading = false
    }
  }
}

vue实现数据分页

标签: 分页数据
分享给朋友:

相关文章

vue实现表格数据修改

vue实现表格数据修改

实现表格数据修改的基本思路 在Vue中实现表格数据修改通常涉及以下核心步骤:数据绑定、编辑状态切换、表单输入处理和数据提交。以下是一个典型实现方案: 数据绑定与渲染 使用v-for指令循环渲染表格数…

vue实现重置表格数据

vue实现重置表格数据

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

vue实现数据删除

vue实现数据删除

Vue 实现数据删除的方法 在 Vue 中删除数据通常涉及操作数组或对象,并结合响应式更新。以下是几种常见实现方式: 从数组中删除数据 使用 splice 方法删除数组中的指定项: metho…

vue实现页面分页

vue实现页面分页

Vue实现页面分页的方法 使用Element UI的分页组件 Element UI提供了现成的分页组件el-pagination,适合快速集成。以下是一个示例代码: <template>…

jquery 分页

jquery 分页

实现 jQuery 分页的方法 客户端分页实现 使用 jQuery 实现客户端分页的核心思路是通过 JavaScript 控制数据的显示与隐藏。假设有一个包含数据的 HTML 列表或表格: //…

uniapp 分页组件

uniapp 分页组件

uniapp 分页组件实现方法 在uniapp中实现分页功能,可以通过自定义组件或使用第三方组件库完成。以下是几种常见实现方式: 自定义分页组件 创建一个名为uni-pagination的组件,模…