当前位置:首页 > VUE

vue实现列表分页

2026-03-29 00:42:01VUE

Vue 列表分页实现方法

使用计算属性分页

通过计算属性动态计算当前页数据,结合 v-for 渲染分页内容:

data() {
  return {
    items: [], // 原始数据列表
    currentPage: 1,
    itemsPerPage: 10
  }
},
computed: {
  paginatedItems() {
    const start = (this.currentPage - 1) * this.itemsPerPage
    const end = start + this.itemsPerPage
    return this.items.slice(start, end)
  },
  totalPages() {
    return Math.ceil(this.items.length / this.itemsPerPage)
  }
}

模板部分:

<ul>
  <li v-for="item in paginatedItems" :key="item.id">{{ item.name }}</li>
</ul>

分页导航组件

实现分页按钮控制逻辑:

methods: {
  goToPage(page) {
    if (page >= 1 && page <= this.totalPages) {
      this.currentPage = page
    }
  }
}

模板部分:

<div class="pagination">
  <button @click="goToPage(currentPage - 1)" :disabled="currentPage === 1">上一页</button>
  <span v-for="page in totalPages" 
        @click="goToPage(page)"
        :class="{ active: currentPage === page }">
    {{ page }}
  </span>
  <button @click="goToPage(currentPage + 1)" :disabled="currentPage === totalPages">下一页</button>
</div>

使用第三方库

对于复杂分页需求,可以使用现成的分页组件:

安装 vuejs-paginate

npm install vuejs-paginate

使用示例:

import Paginate from 'vuejs-paginate'

export default {
  components: { Paginate },
  methods: {
    handlePageClick(data) {
      this.currentPage = data
    }
  }
}

模板部分:

<paginate
  :page-count="totalPages"
  :click-handler="handlePageClick"
  :prev-text="'<'"
  :next-text="'>'"
  :container-class="'pagination'"
  :page-class="'page-item'">
</paginate>

样式优化

为分页组件添加基础样式:

.pagination {
  display: flex;
  list-style: none;
  padding: 0;
}

.page-item {
  margin: 0 5px;
  cursor: pointer;
}

.active {
  font-weight: bold;
  color: #42b983;
}

动态调整每页数量

添加每页显示数量选择功能:

data() {
  return {
    pageSizeOptions: [5, 10, 20, 50]
  }
}

模板部分:

<select v-model="itemsPerPage" @change="currentPage = 1">
  <option v-for="size in pageSizeOptions" :value="size">{{ size }}条/页</option>
</select>

性能优化

对于大数据量场景,考虑虚拟滚动或懒加载技术:

// 使用vue-virtual-scroller
import { RecycleScroller } from 'vue-virtual-scroller'

components: {
  RecycleScroller
}

模板部分:

vue实现列表分页

<RecycleScroller
  :items="paginatedItems"
  :item-size="50"
  key-field="id">
  <template v-slot="{ item }">
    <div>{{ item.name }}</div>
  </template>
</RecycleScroller>

标签: 分页列表
分享给朋友:

相关文章

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

vue实现后台分页

vue实现后台分页

Vue 实现后台分页的方法 分页组件与数据绑定 在 Vue 中实现后台分页通常需要结合分页组件和后端 API。使用 el-pagination(Element UI)或自定义分页组件,通过 v-mod…

react如何实现分页

react如何实现分页

实现分页的基本思路 在React中实现分页通常需要以下几个核心步骤:管理当前页码状态、计算分页数据、渲染分页控件。以下是一个典型的分页实现方法。 管理分页状态 使用React的useState钩子来…

vue实现分页组件

vue实现分页组件

Vue 分页组件实现 基础分页组件结构 创建一个名为 Pagination.vue 的文件,包含以下基础模板和逻辑: <template> <div class="pagina…

vue实现筛选列表

vue实现筛选列表

Vue 实现筛选列表的方法 数据绑定与列表渲染 使用 v-for 指令渲染原始列表,绑定到 data 中的数组。例如: data() { return { items: […

vue实现纵向列表

vue实现纵向列表

实现纵向列表的基本方法 在Vue中实现纵向列表可以通过v-for指令结合数组数据渲染。核心是利用循环遍历数据生成列表项,并设置CSS控制纵向排列。 <template> <di…