当前位置:首页 > uni-app

uniapp列表分页

2026-02-06 01:45:35uni-app

uniapp列表分页实现方法

基础分页逻辑

在uniapp中实现列表分页需要结合前端和后端逻辑。前端负责发送分页请求和渲染数据,后端负责处理分页查询并返回对应数据。

data() {
  return {
    listData: [], // 列表数据
    pageSize: 10, // 每页数量
    currentPage: 1, // 当前页码
    total: 0, // 总数据量
    loading: false, // 加载状态
    noMore: false // 是否没有更多数据
  }
}

获取分页数据

通过uni.request或封装后的API请求获取分页数据。建议使用async/await方式处理异步请求。

methods: {
  async getListData() {
    if (this.loading || this.noMore) return

    this.loading = true
    try {
      const res = await uni.request({
        url: '你的API地址',
        data: {
          page: this.currentPage,
          pageSize: this.pageSize
        }
      })

      if (res.data.list.length < this.pageSize) {
        this.noMore = true
      }

      this.listData = [...this.listData, ...res.data.list]
      this.total = res.data.total
      this.currentPage++
    } catch (e) {
      console.error(e)
    } finally {
      this.loading = false
    }
  }
}

上拉加载更多

在页面的onReachBottom生命周期中触发加载更多数据。

onReachBottom() {
  this.getListData()
}

下拉刷新

使用uni.startPullDownRefresh和uni.stopPullDownRefresh实现下拉刷新功能。

onPullDownRefresh() {
  this.currentPage = 1
  this.listData = []
  this.noMore = false
  this.getListData().finally(() => {
    uni.stopPullDownRefresh()
  })
}

页面初始化加载

在onLoad或onShow生命周期中初始化加载第一页数据。

onLoad() {
  this.getListData()
}

列表渲染优化

使用scroll-view或原生列表渲染大量数据时,应考虑性能优化。

<scroll-view 
  scroll-y 
  @scrolltolower="getListData" 
  style="height: 100vh"
>
  <view v-for="(item, index) in listData" :key="index">
    <!-- 列表项内容 -->
  </view>
  <view v-if="loading">加载中...</view>
  <view v-if="noMore">没有更多数据了</view>
</scroll-view>

分页组件封装

对于复杂项目,建议将分页逻辑封装为mixin或组件,提高代码复用性。

// paginationMixin.js
export default {
  data() {
    return {
      listData: [],
      pageSize: 10,
      currentPage: 1,
      total: 0,
      loading: false,
      noMore: false
    }
  },
  methods: {
    async fetchData() {
      // 抽象获取数据方法,由具体页面实现
    },
    resetPagination() {
      this.currentPage = 1
      this.listData = []
      this.noMore = false
    }
  }
}

注意事项

  1. 确保后端API支持分页参数,通常需要page和pageSize两个参数
  2. 处理网络请求错误情况,避免因错误导致分页状态异常
  3. 大数据量列表应考虑虚拟滚动优化性能
  4. 分页参数命名应与后端保持一致,避免混淆
  5. 移动端分页通常采用无限滚动模式,而非传统页码分页

通过以上方法可以在uniapp中实现高效、流畅的列表分页功能,适用于新闻列表、商品列表等各种场景。

uniapp列表分页

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

相关文章

vue实现列表

vue实现列表

Vue 实现列表的方法 在 Vue 中实现列表渲染通常使用 v-for 指令,可以动态生成多个元素。以下是几种常见的实现方式: 基础列表渲染 使用 v-for 遍历数组,生成列表项。v-for 需要…

vue前端分页怎么实现

vue前端分页怎么实现

使用 Element UI 的分页组件 Element UI 提供了现成的分页组件 <el-pagination>,可以快速实现分页功能。需要安装 Element UI 并注册组件。…

vue 分页 实现

vue 分页 实现

Vue 分页实现方法 使用 Element UI 分页组件 Element UI 提供了现成的分页组件 el-pagination,适合快速集成。需要先安装 Element UI 库。 安装 Ele…

php分页代码简单实现

php分页代码简单实现

基本分页实现 在PHP中实现分页功能通常需要结合MySQL的LIMIT子句。以下是一个基础实现示例: <?php // 数据库连接 $conn = mysqli_connect("localh…

h5 实现列表

h5 实现列表

列表实现方法 在HTML5中,可以通过多种方式实现列表,包括无序列表、有序列表和自定义列表。以下是具体的实现方法。 无序列表 无序列表使用<ul>标签,列表项使用<li>标签…

vue router实现分页

vue router实现分页

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