当前位置:首页 > VUE

vue实现手机分页教程

2026-02-21 07:56:23VUE

Vue实现手机分页教程

在Vue中实现手机分页功能,通常需要结合后端API的分页数据和前端UI组件。以下是具体实现方法:

数据准备

确保后端API支持分页参数(如pagepageSize),返回格式应包含当前页数据及总条数:

{
  "data": [],
  "total": 100
}

基础实现

安装依赖(如需要):

npm install axios

创建分页组件:

<template>
  <div class="mobile-pagination">
    <ul v-if="total > pageSize">
      <li @click="prevPage" :class="{ disabled: currentPage === 1 }">上一页</li>
      <li v-for="page in visiblePages" 
          @click="goToPage(page)"
          :class="{ active: currentPage === page }">
        {{ page }}
      </li>
      <li @click="nextPage" :class="{ disabled: currentPage === totalPages }">下一页</li>
    </ul>
  </div>
</template>

<script>
export default {
  props: {
    total: Number,
    pageSize: { type: Number, default: 10 },
    currentPage: { type: Number, default: 1 }
  },
  computed: {
    totalPages() {
      return Math.ceil(this.total / this.pageSize)
    },
    visiblePages() {
      const range = 2
      let start = Math.max(1, this.currentPage - range)
      let end = Math.min(this.totalPages, this.currentPage + range)
      return Array.from({ length: end - start + 1 }, (_, i) => start + i)
    }
  },
  methods: {
    goToPage(page) {
      if (page !== this.currentPage) {
        this.$emit('page-change', page)
      }
    },
    prevPage() {
      if (this.currentPage > 1) {
        this.goToPage(this.currentPage - 1)
      }
    },
    nextPage() {
      if (this.currentPage < this.totalPages) {
        this.goToPage(this.currentPage + 1)
      }
    }
  }
}
</script>

结合数据加载

在父组件中调用API:

<script>
import axios from 'axios'

export default {
  data() {
    return {
      list: [],
      pagination: {
        page: 1,
        pageSize: 10,
        total: 0
      }
    }
  },
  methods: {
    async fetchData() {
      const res = await axios.get('/api/list', {
        params: {
          page: this.pagination.page,
          size: this.pagination.pageSize
        }
      })
      this.list = res.data.data
      this.pagination.total = res.data.total
    }
  },
  created() {
    this.fetchData()
  }
}
</script>

移动端优化技巧

  1. 使用无限滚动代替传统分页(适合长列表):
    
    <template>
    <div @scroll="handleScroll" style="overflow-y: auto; height: 100vh">
     <!-- 列表内容 -->
     <div v-if="loading" class="loading">加载中...</div>
    </div>
    </template>
export default { methods: { handleScroll(e) { const { scrollTop, clientHeight, scrollHeight } = e.target if (scrollHeight - scrollTop - clientHeight
  • 添加下拉刷新功能(使用第三方库如vant):
    <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
    <van-list
     v-model:loading="loading"
     :finished="finished"
     @load="onLoad"
    >
     <!-- 列表内容 -->
    </van-list>
    </van-pull-refresh>
  • 样式优化

    针对移动端的CSS建议:

    .mobile-pagination {
      display: flex;
      justify-content: center;
      padding: 10px 0;
    }
    
    .mobile-pagination ul {
      display: flex;
      list-style: none;
      padding: 0;
    }
    
    .mobile-pagination li {
      margin: 0 5px;
      padding: 5px 10px;
      border: 1px solid #ddd;
      border-radius: 3px;
    }
    
    .mobile-pagination li.active {
      background-color: #42b983;
      color: white;
    }
    
    .mobile-pagination li.disabled {
      opacity: 0.5;
      pointer-events: none;
    }

    注意事项

    1. 移动端分页按钮不宜过多,建议显示当前页前后各2页
    2. 添加加载状态提示,提升用户体验
    3. 考虑使用第三方UI库(如Vant、Mint UI)的现成分页组件
    4. 对于超长列表,优先考虑无限滚动方案

    vue实现手机分页教程

    标签: 分页教程
    分享给朋友:

    相关文章

    js 实现分页

    js 实现分页

    实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

    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实现滚动分页

    实现滚动分页的基本思路 滚动分页(Infinite Scroll)是一种常见的前端分页加载方式,当用户滚动到页面底部时自动加载下一页数据。Vue 结合现代前端工具可以轻松实现这一功能。 监听滚动事…

    vue怎么实现分页

    vue怎么实现分页

    Vue 分页实现方法 基于 Element UI 的分页组件 Element UI 提供了现成的分页组件 el-pagination,适合快速集成。 安装 Element UI: npm inst…