当前位置:首页 > VUE

vue怎么实现分页查询

2026-01-20 02:29:29VUE

Vue 实现分页查询的方法

后端 API 设计

后端需要提供支持分页的 API,通常包含 page(当前页码)和 pageSize(每页条数)参数。返回数据格式应包含总条数 total 和当前页的数据列表 list

// 示例 API 返回格式
{
  "code": 200,
  "data": {
    "total": 100,
    "list": [
      { "id": 1, "name": "Item 1" },
      { "id": 2, "name": "Item 2" }
    ]
  }
}

前端数据请求

使用 axios 或其他 HTTP 库调用分页接口,传递分页参数。

vue怎么实现分页查询

import axios from 'axios';

export function fetchData(page, pageSize) {
  return axios.get('/api/data', {
    params: { page, pageSize }
  });
}

Vue 组件实现

在 Vue 组件中定义分页相关数据,调用接口并更新页面。

<template>
  <div>
    <table>
      <tr v-for="item in list" :key="item.id">
        <td>{{ item.name }}</td>
      </tr>
    </table>
    <el-pagination
      @current-change="handlePageChange"
      :current-page="page"
      :page-size="pageSize"
      :total="total"
      layout="prev, pager, next">
    </el-pagination>
  </div>
</template>

<script>
import { fetchData } from '@/api';

export default {
  data() {
    return {
      list: [],
      page: 1,
      pageSize: 10,
      total: 0
    };
  },
  created() {
    this.loadData();
  },
  methods: {
    loadData() {
      fetchData(this.page, this.pageSize).then(res => {
        this.list = res.data.list;
        this.total = res.data.total;
      });
    },
    handlePageChange(page) {
      this.page = page;
      this.loadData();
    }
  }
};
</script>

使用 Element UI 分页组件

如果使用 Element UI,可以直接使用 <el-pagination> 组件。需监听 current-change 事件,在页码变化时重新加载数据。

vue怎么实现分页查询

<el-pagination
  @current-change="handlePageChange"
  :current-page="page"
  :page-size="pageSize"
  :total="total"
  layout="prev, pager, next">
</el-pagination>

自定义分页逻辑

若不使用 UI 库,可以手动实现分页逻辑。通过计算总页数 totalPages 和生成页码数组来控制分页。

computed: {
  totalPages() {
    return Math.ceil(this.total / this.pageSize);
  },
  pageNumbers() {
    const pages = [];
    for (let i = 1; i <= this.totalPages; i++) {
      pages.push(i);
    }
    return pages;
  }
}

前端本地分页

如果数据量较小,可以在前端本地实现分页。使用 slice 方法截取当前页数据。

methods: {
  getCurrentPageData() {
    const start = (this.page - 1) * this.pageSize;
    const end = start + this.pageSize;
    return this.allData.slice(start, end);
  }
}

性能优化

对于大数据量,建议使用后端分页。前端分页仅适合数据量小的场景,避免一次性加载过多数据导致性能问题。

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

相关文章

vue原型实现

vue原型实现

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

ssh vue 实现

ssh vue 实现

使用SSH连接Vue项目部署的服务器 在Vue项目开发或部署过程中,可能需要通过SSH连接到远程服务器进行配置或维护。以下是实现SSH连接并部署Vue项目的关键步骤: 生成SSH密钥对 在本地终端运…

vue实现fullpage

vue实现fullpage

Vue 实现 FullPage 效果 在 Vue 中实现全屏滚动(FullPage)效果可以通过多种方式完成,以下是几种常见的方法: 使用现有库 vue-fullpage.js 安装 vue-ful…

vue 实现拖拉

vue 实现拖拉

Vue 实现拖拽功能的方法 使用 HTML5 原生拖放 API HTML5 提供了原生的拖放 API,可以通过 draggable 属性、dragstart、dragend、dragover 和 dr…

vue 简单实现

vue 简单实现

以下是 Vue 的简单实现示例,涵盖基础模板、数据绑定、方法及生命周期: 基础模板与数据绑定 <div id="app"> <p>{{ message }}</p&…

vue实现爬虫

vue实现爬虫

Vue 实现爬虫的基本思路 Vue.js 本身是一个前端框架,主要用于构建用户界面。要实现爬虫功能,通常需要结合后端技术或浏览器自动化工具。以下是几种常见的方法: 方法一:Vue + Node.js…