当前位置:首页 > VUE

vue中分页怎么实现

2026-01-21 18:10:23VUE

使用Element UI的分页组件

Element UI提供了现成的分页组件el-pagination,适用于Vue 2项目。安装Element UI后,直接引入分页组件并绑定数据即可。

<template>
  <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>
</template>

<script>
export default {
  data() {
    return {
      currentPage: 1,
      pageSize: 10,
      total: 100
    }
  },
  methods: {
    handleSizeChange(val) {
      this.pageSize = val;
      this.fetchData();
    },
    handleCurrentChange(val) {
      this.currentPage = val;
      this.fetchData();
    },
    fetchData() {
      // 根据currentPage和pageSize请求数据
    }
  }
}
</script>

使用Ant Design Vue的分页组件

Ant Design Vue的a-pagination组件适用于Vue 3项目,功能与Element UI类似。

vue中分页怎么实现

<template>
  <a-pagination
    v-model:current="currentPage"
    v-model:pageSize="pageSize"
    :total="total"
    show-size-changer
    @change="handlePageChange"
  />
</template>

<script>
import { ref } from 'vue';
export default {
  setup() {
    const currentPage = ref(1);
    const pageSize = ref(10);
    const total = ref(100);

    const handlePageChange = () => {
      // 根据currentPage和pageSize请求数据
    };

    return { currentPage, pageSize, total, handlePageChange };
  }
}
</script>

手动实现分页逻辑

如果不依赖UI库,可以通过计算属性手动实现分页逻辑。假设有一个数据数组listData,需要按每页pageSize条数据进行分割。

vue中分页怎么实现

<template>
  <div>
    <ul>
      <li v-for="item in paginatedData" :key="item.id">{{ item.name }}</li>
    </ul>
    <button @click="prevPage">上一页</button>
    <span>当前页: {{ currentPage }}</span>
    <button @click="nextPage">下一页</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      listData: [], // 原始数据
      currentPage: 1,
      pageSize: 5
    }
  },
  computed: {
    paginatedData() {
      const start = (this.currentPage - 1) * this.pageSize;
      const end = start + this.pageSize;
      return this.listData.slice(start, end);
    }
  },
  methods: {
    prevPage() {
      if (this.currentPage > 1) this.currentPage--;
    },
    nextPage() {
      if (this.currentPage < this.totalPages) this.currentPage++;
    }
  }
}
</script>

结合后端API实现分页

实际项目中,分页通常需要与后端API交互。通过传递pagepageSize参数获取对应数据。

methods: {
  async fetchData() {
    const params = {
      page: this.currentPage,
      pageSize: this.pageSize
    };
    const res = await axios.get('/api/data', { params });
    this.listData = res.data.list;
    this.total = res.data.total;
  }
}

分页样式自定义

如果需要自定义分页样式,可以通过覆盖UI库的CSS或手动编写样式。例如修改Element UI分页按钮颜色:

.el-pagination.is-background .el-pager li:not(.disabled).active {
  background-color: #ff6b6b;
}

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

相关文章

vue实现菜单栏锚点

vue实现菜单栏锚点

实现锚点菜单的基本思路 在Vue中实现菜单栏锚点功能,主要涉及两个方面:创建可跳转的锚点位置,以及菜单项的点击滚动控制。通过监听滚动事件可以高亮当前可见区域的对应菜单项。 创建页面锚点位置 在需要跳…

vue 实现回复

vue 实现回复

Vue 实现回复功能 在 Vue 中实现回复功能通常涉及表单提交、数据绑定和列表渲染。以下是实现步骤和代码示例: 数据绑定与表单 <template> <div>…

vue实现pwa

vue实现pwa

Vue 实现 PWA 的步骤 Vue 结合 PWA(Progressive Web App)可以创建离线可用的 Web 应用。以下是实现方法: 安装 Vue CLI 并创建项目 确保已安装 Vue…

vue实现横滚

vue实现横滚

Vue 实现横滚效果 横滚效果通常指水平滚动内容,常见于轮播图、横向导航栏等场景。以下是几种实现方式: 使用 CSS 和 Vue 结合 通过 CSS 的 overflow-x 和 white-spa…

vue 实现loading

vue 实现loading

Vue 实现 Loading 的方法 使用 v-if 和 v-show 控制显示 在 Vue 中可以通过 v-if 或 v-show 控制 loading 组件的显示与隐藏。v-if 会动态创建或销毁…

vue实现模糊

vue实现模糊

Vue实现模糊搜索的方法 在Vue中实现模糊搜索功能通常需要结合输入框和列表渲染,通过监听输入内容动态过滤数据。以下是几种常见实现方式: 使用计算属性实现 计算属性适合处理需要响应式更新的搜索逻辑:…