当前位置:首页 > VUE

分页实现vue

2026-03-27 12:39:27VUE

分页实现(Vue)

使用Element UI的分页组件

安装Element UI库(若未安装):

npm install element-ui

在Vue项目中引入分页组件:

import { Pagination } from 'element-ui';
Vue.use(Pagination);

模板中使用分页组件:

<template>
  <el-pagination
    @size-change="handleSizeChange"
    @current-change="handleCurrentChange"
    :current-page="currentPage"
    :page-sizes="[10, 20, 50, 100]"
    :page-size="pageSize"
    layout="total, sizes, prev, pager, next, jumper"
    :total="total">
  </el-pagination>
</template>

数据与方法定义:

分页实现vue

data() {
  return {
    currentPage: 1,
    pageSize: 10,
    total: 0,
    list: []
  };
},
methods: {
  handleSizeChange(val) {
    this.pageSize = val;
    this.fetchData();
  },
  handleCurrentChange(val) {
    this.currentPage = val;
    this.fetchData();
  },
  fetchData() {
    // 模拟API请求
    const start = (this.currentPage - 1) * this.pageSize;
    const end = start + this.pageSize;
    this.list = mockData.slice(start, end);
    this.total = mockData.length;
  }
}

自定义分页组件

创建自定义分页逻辑:

<template>
  <div class="pagination">
    <button 
      @click="prevPage" 
      :disabled="currentPage === 1">
      上一页
    </button>
    <span>第{{ currentPage }}页/共{{ totalPages }}页</span>
    <button 
      @click="nextPage" 
      :disabled="currentPage === totalPages">
      下一页
    </button>
  </div>
</template>

逻辑实现:

分页实现vue

props: {
  totalItems: {
    type: Number,
    required: true
  },
  itemsPerPage: {
    type: Number,
    default: 10
  }
},
data() {
  return {
    currentPage: 1
  };
},
computed: {
  totalPages() {
    return Math.ceil(this.totalItems / this.itemsPerPage);
  }
},
methods: {
  prevPage() {
    if (this.currentPage > 1) {
      this.currentPage--;
      this.$emit('page-changed', this.currentPage);
    }
  },
  nextPage() {
    if (this.currentPage < this.totalPages) {
      this.currentPage++;
      this.$emit('page-changed', this.currentPage);
    }
  }
}

后端API分页处理

前端请求参数:

axios.get('/api/data', {
  params: {
    page: this.currentPage,
    size: this.pageSize
  }
})

后端响应结构示例:

{
  "data": [],
  "total": 100,
  "currentPage": 1,
  "pageSize": 10
}

分页样式优化

添加CSS样式增强用户体验:

.pagination {
  display: flex;
  justify-content: center;
  margin-top: 20px;
}
.pagination button {
  margin: 0 10px;
  padding: 5px 15px;
  border: 1px solid #ddd;
  background: #fff;
  cursor: pointer;
}
.pagination button:disabled {
  color: #ccc;
  cursor: not-allowed;
}

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

相关文章

antd vue 实现

antd vue 实现

使用 Ant Design Vue 实现功能 Ant Design Vue 是基于 Vue.js 的 UI 组件库,提供了丰富的组件和设计规范。以下是一些常见功能的实现方法。 安装 Ant Desi…

实现 vue 框架

实现 vue 框架

Vue 框架的基本实现 Vue 是一个渐进式 JavaScript 框架,用于构建用户界面。以下是实现 Vue 框架的基本步骤和核心概念。 核心概念 响应式数据绑定 Vue 的核心特性之一是响应式数…

vue 实现滚动

vue 实现滚动

实现滚动的基本方法 在Vue中实现滚动效果可以通过多种方式完成,包括使用原生JavaScript、CSS或第三方库。以下是一些常见的方法: 使用window.scrollTo方法实现页面滚动 可以通…

vue实现 hover

vue实现 hover

实现 Vue 中的 hover 效果 在 Vue 中实现 hover 效果可以通过多种方式完成,以下是常见的几种方法: 使用 CSS 伪类 最简单的方式是直接使用 CSS 的 :hover 伪类,无…

vue实现验证

vue实现验证

Vue 表单验证实现方法 在Vue中实现表单验证可以通过多种方式完成,以下是常见的几种方法: 使用Vuelidate库 Vuelidate是一个轻量级的Vue表单验证库,安装后可以通过简单的配置实现…

vue实现Pop

vue实现Pop

Vue 实现 Popover 组件的方法 使用 Vue 内置指令 v-show/v-if 和事件监听 通过 Vue 的指令和事件绑定实现基础的 Popover 功能。定义一个布尔值控制 Popover…