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

    vue实现手机分页教程

    .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 router实现分页

    vue router实现分页

    使用 Vue Router 实现分页 在 Vue.js 项目中,可以通过 Vue Router 结合分页组件实现分页功能。以下是实现分页的几种方法: 使用路由参数传递页码 在路由配置中定义一个动态参…

    php实现的分页

    php实现的分页

    PHP 实现分页的方法 基本分页逻辑 分页的核心在于计算总页数、当前页码以及数据偏移量。假设每页显示 10 条数据: $current_page = isset($_GET['page']) ? (…

    vue 实现分页效果

    vue 实现分页效果

    使用 Element UI 实现分页 Element UI 提供了现成的分页组件 el-pagination,适合快速集成到 Vue 项目中。 安装 Element UI: npm install…

    vue实现分页请求

    vue实现分页请求

    Vue 实现分页请求的方法 在 Vue 中实现分页请求通常需要结合前端分页组件和后端 API 的分页逻辑。以下是常见的实现方法: 分页组件与数据绑定 使用 v-pagination 或其他分页组件(…

    vue基本实现分页

    vue基本实现分页

    Vue 基本实现分页的方法 数据分页处理 在 Vue 中实现分页功能,通常需要先对数据进行分块处理。假设有一个数据数组 listData,可以通过计算属性或方法将其分割为每页显示的数据块: data…

    vue实现分页查询

    vue实现分页查询

    Vue 实现分页查询 基本思路 在 Vue 中实现分页查询通常需要结合后端 API 和前端组件。核心逻辑包括: 通过 API 获取分页数据 处理分页参数(当前页、每页条数) 渲染分页控件 监听页码变…