当前位置:首页 > VUE

vue分页实现

2026-03-28 00:52:39VUE

Vue 分页实现方法

基于 Element UI 的分页组件

Element UI 提供了现成的分页组件 el-pagination,适合快速集成到 Vue 项目中。以下是一个完整的示例:

vue分页实现

<template>
  <div>
    <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>
  </div>
</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() {
      // 调用 API 获取数据,传递 currentPage 和 pageSize 参数
      console.log(`当前页码: ${this.currentPage}, 每页条数: ${this.pageSize}`);
    }
  }
}
</script>

自定义分页组件

如果需要完全自定义分页逻辑,可以手动实现分页功能:

vue分页实现

<template>
  <div>
    <ul class="pagination">
      <li v-for="page in pages" :key="page">
        <button @click="goToPage(page)">{{ page }}</button>
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  props: {
    totalItems: Number,
    itemsPerPage: Number,
    currentPage: Number
  },
  computed: {
    pages() {
      const pageCount = Math.ceil(this.totalItems / this.itemsPerPage);
      return Array.from({ length: pageCount }, (_, i) => i + 1);
    }
  },
  methods: {
    goToPage(page) {
      this.$emit('page-changed', page);
    }
  }
}
</script>

<style>
.pagination {
  display: flex;
  list-style: none;
}
.pagination li {
  margin: 0 5px;
}
</style>

后端分页实现

与后端 API 配合实现分页时,通常需要传递页码和每页条数参数:

async fetchPaginatedData() {
  const response = await axios.get('/api/items', {
    params: {
      page: this.currentPage,
      limit: this.pageSize
    }
  });
  this.items = response.data.items;
  this.total = response.data.total;
}

分页性能优化

对于大数据量分页,可以考虑以下优化措施:

  • 使用虚拟滚动技术替代传统分页
  • 实现无限滚动加载更多内容
  • 添加防抖处理快速翻页请求
  • 缓存已加载的页面数据
// 防抖示例
debouncedFetchData: _.debounce(function() {
  this.fetchData();
}, 300)

以上方法可以根据项目需求选择或组合使用,Element UI 的分页组件适合大多数场景,自定义分页组件则提供了更高的灵活性。

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

相关文章

vue  实现tab

vue 实现tab

实现 Tab 切换功能 在 Vue 中实现 Tab 切换功能可以通过动态组件或条件渲染完成。以下是两种常见方法: 使用 v-if 或 v-show 实现条件渲染 通过绑定 currentTab 变量…

vue首页实现

vue首页实现

实现Vue首页的基本步骤 创建一个Vue首页通常涉及项目初始化、页面结构设计、路由配置和组件开发。以下是具体实现方法: 初始化Vue项目 使用Vue CLI或Vite快速搭建项目结构: npm i…

vue实现答题

vue实现答题

Vue 实现答题功能 数据结构设计 使用 Vue 的响应式特性管理题目和答案数据。通常需要以下数据结构: data() { return { questions: [ {…

vue实现树形

vue实现树形

Vue 实现树形组件 在 Vue 中实现树形结构通常需要递归组件和动态数据绑定。以下是实现树形组件的几种常见方法。 递归组件实现 递归组件是 Vue 中实现树形结构的核心方法。通过组件调用自身,可以…

vue实现抽屉

vue实现抽屉

Vue 实现抽屉组件 抽屉组件是一种常见的 UI 模式,通常用于从屏幕边缘滑出内容。以下是几种实现抽屉的方法: 使用 Vue 原生实现 创建一个基本的抽屉组件,利用 Vue 的过渡和条件渲染功能。…

vue实现gridlayout

vue实现gridlayout

Vue 实现 Grid Layout 使用 CSS Grid 布局 CSS Grid 是一种强大的布局系统,可以直接在 Vue 组件的样式中使用。通过定义网格容器和网格项,可以快速实现复杂的布局结构。…