当前位置:首页 > VUE

vue实现假分页

2026-01-18 13:27:56VUE

实现假分页的基本思路

假分页(前端分页)指在一次性获取所有数据后,通过前端逻辑对数据进行分页展示。相比真分页(后端分页),假分页减少了与后端的交互次数,但可能带来性能问题(数据量过大时)。

核心实现步骤

数据准备 定义总数据数组和分页相关变量:

data() {
  return {
    allData: [],      // 全部数据
    currentPage: 1,    // 当前页码
    pageSize: 10,      // 每页条数
    paginatedData: []  // 当前页数据
  }
}

分页逻辑 通过计算属性实现分页切片:

computed: {
  totalPages() {
    return Math.ceil(this.allData.length / this.pageSize)
  },
  displayedData() {
    const start = (this.currentPage - 1) * this.pageSize
    const end = start + this.pageSize
    return this.allData.slice(start, end)
  }
}

页面控制方法 添加翻页方法:

methods: {
  goToPage(page) {
    if (page >= 1 && page <= this.totalPages) {
      this.currentPage = page
    }
  }
}

完整组件示例

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

    <div class="pagination">
      <button @click="goToPage(currentPage - 1)" :disabled="currentPage === 1">上一页</button>
      <span>第 {{ currentPage }} 页 / 共 {{ totalPages }} 页</span>
      <button @click="goToPage(currentPage + 1)" :disabled="currentPage === totalPages">下一页</button>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      allData: Array.from({length: 100}, (_, i) => ({ id: i, name: `项目 ${i}` })),
      currentPage: 1,
      pageSize: 10
    }
  },
  computed: {
    totalPages() {
      return Math.ceil(this.allData.length / this.pageSize)
    },
    displayedData() {
      const start = (this.currentPage - 1) * this.pageSize
      const end = start + this.pageSize
      return this.allData.slice(start, end)
    }
  },
  methods: {
    goToPage(page) {
      if (page >= 1 && page <= this.totalPages) {
        this.currentPage = page
      }
    }
  }
}
</script>

性能优化建议

对于大数据量场景(如超过1000条记录),建议:

  • 添加虚拟滚动技术(如使用vue-virtual-scroller)
  • 实现懒加载分批获取数据
  • 添加分页尺寸选择器
  • 考虑改用后端分页

扩展功能实现

添加分页尺寸选择

data() {
  return {
    pageSizeOptions: [5, 10, 20, 50]
  }
}

模板中添加:

<select v-model="pageSize" @change="currentPage = 1">
  <option v-for="size in pageSizeOptions" :value="size">{{ size }}条/页</option>
</select>

添加页码快捷跳转

vue实现假分页

<input 
  type="number" 
  v-model.number="jumpPage" 
  @keyup.enter="goToPage(jumpPage)"
  min="1" 
  :max="totalPages"
>

假分页实现简单高效,适合中小型数据集场景,但需注意性能边界。

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

相关文章

vue原型实现

vue原型实现

Vue 原型实现的关键点 Vue.js 的原型系统是其响应式机制的核心部分,通过原型链实现数据的动态绑定和依赖收集。以下是实现 Vue 原型的主要技术要点。 数据响应式原理 Vue 通过 Objec…

vue实现https

vue实现https

Vue 中实现 HTTPS 的步骤 在 Vue 项目中实现 HTTPS 主要涉及开发环境配置和生产环境部署。以下是具体方法: 开发环境配置(Vue CLI 或 Vite) 使用 mkcert 生成…

vue实现翻页

vue实现翻页

Vue实现翻页功能 在Vue中实现翻页功能通常需要结合分页组件和数据请求逻辑。以下是常见的实现方法: 使用Element UI分页组件 安装Element UI后,可以直接使用其分页组件:…

vue 实现 confirm

vue 实现 confirm

实现确认对话框的方法 在Vue中实现确认对话框可以通过多种方式完成,包括使用内置组件、第三方库或自定义组件。 使用浏览器原生confirm 最简单的实现方式是直接调用浏览器原生的confirm方法。…

vue 实现协同

vue 实现协同

Vue 实现协同编辑的方案 协同编辑指多个用户同时编辑同一文档并实时同步更改。Vue 结合相关库和技术可轻松实现该功能。 使用 WebSocket 实现实时通信 WebSocket 提供全双工通信,…

vue实现部门树

vue实现部门树

Vue 实现部门树的方法 使用递归组件实现树形结构 递归组件是 Vue 中实现树形结构的常见方式。通过组件自身调用自身,可以轻松构建多层级的部门树。 <template> <d…