当前位置:首页 > 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 的 <component :is="currentComponent"> 动态加载不同弹窗组件,结合 v-if 控制显示状态。…

vue实现分屏

vue实现分屏

Vue 实现分屏的方法 分屏功能通常用于展示多个独立内容区域,以下是几种常见的实现方式: 使用 CSS Grid 布局 通过 CSS Grid 可以轻松创建分屏布局,在 Vue 组件中直接应用样式…

vue单选实现

vue单选实现

Vue 单选实现 在 Vue 中实现单选功能可以通过多种方式完成,以下是几种常见的方法: 使用 v-model 绑定单选按钮 通过 v-model 绑定一个变量,可以实现单选效果。当用户选择不同的选…

vue实现系统

vue实现系统

Vue 实现系统的核心方法 使用 Vue.js 构建系统时,需结合其响应式特性与组件化开发模式。以下为关键实现路径: 项目初始化与工程配置 通过 Vue CLI 或 Vite 创建项目骨架,推荐选择…

vue filter 实现

vue filter 实现

在 Vue.js 中,过滤器(Filter)是一种用于文本格式化的功能,可以在模板中直接使用。以下是实现过滤器的详细方法: 全局过滤器注册 通过 Vue.filter 方法注册全局过滤器,可在所有…

vue 实现赋值

vue 实现赋值

Vue 实现赋值的方法 在 Vue 中,赋值操作通常涉及数据绑定和响应式更新。以下是几种常见的赋值方式: 直接赋值给 data 属性 在 Vue 实例的 data 对象中定义的属性可以直接通过 t…