当前位置:首页 > 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或组件,提高代码复用性。

uniapp列表分页

// 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中实现高效、流畅的列表分页功能,适用于新闻列表、商品列表等各种场景。

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

相关文章

vue实现列表水印

vue实现列表水印

实现列表水印的方法 在Vue中为列表添加水印可以通过多种方式实现,以下是几种常见的方法: 使用CSS背景图 通过CSS的background-image属性为列表容器添加水印背景。水印可以是文字或图…

vue公共列表的实现

vue公共列表的实现

Vue 公共列表的实现方法 在 Vue 中实现公共列表组件,可以通过封装可复用的逻辑和模板来完成。以下是几种常见的实现方式: 使用 props 和 slots 通过 props 接收列表数据,使用…

vue实现页面分页

vue实现页面分页

Vue实现页面分页的方法 使用Element UI的分页组件 Element UI提供了现成的分页组件el-pagination,适合快速集成。以下是一个示例代码: <template>…

php实现的分页

php实现的分页

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

vue加载实现分页

vue加载实现分页

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

vue实现传输列表

vue实现传输列表

Vue 实现传输列表 在 Vue 中实现传输列表功能,通常涉及两个列表之间的数据传递,用户可以通过按钮或拖拽操作将项目从一个列表移动到另一个列表。以下是实现传输列表的几种方法。 使用组件间数据传递…