当前位置:首页 > 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

vue实现列表分页

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>

样式优化

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

vue实现列表分页

.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
}

模板部分:

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

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

相关文章

vue实现下拉分页思想

vue实现下拉分页思想

实现下拉分页的基本思想 下拉分页(Infinite Scroll)是一种常见的分页加载方式,当用户滚动到页面底部时自动加载下一页数据。Vue 中可以通过监听滚动事件或使用第三方库实现。 监听滚动事件…

h5实现左右分页

h5实现左右分页

实现左右分页的HTML5方法 在HTML5中实现左右分页效果可以通过多种方式完成,以下是几种常见的方法: 使用CSS Flexbox布局 Flexbox是一种现代的布局方式,可以轻松实现左右分页效果…

vue elementui实现分页

vue elementui实现分页

Vue + ElementUI 分页实现方法 安装与引入 确保已安装 ElementUI,可通过 npm 或 yarn 安装: npm install element-ui 在 main.js 中全…

vue前端实现分页

vue前端实现分页

实现分页的基本思路 在Vue中实现分页通常需要结合后端API返回的数据和前端的分页组件。核心逻辑包括计算总页数、处理当前页码变化以及动态加载数据。 使用Element UI的分页组件 Element…

vue加载实现分页

vue加载实现分页

Vue 实现分页加载的方法 使用 Element UI 的分页组件 安装 Element UI 后,可以直接使用其分页组件。在模板中添加分页组件,并绑定相关事件和数据。 <template&g…

vue实现列表组件

vue实现列表组件

Vue 列表组件实现方法 基础列表渲染 使用 v-for 指令渲染数组数据,需配合 :key 提升性能: <template> <ul> <li v-for…