当前位置:首页 > uni-app

uniapp底部翻页

2026-02-05 23:58:39uni-app

uniapp实现底部翻页功能

在uniapp中实现底部翻页功能通常需要结合滚动视图和分页逻辑。以下是几种常见实现方式:

滚动视图结合触底加载

使用scroll-view组件监听触底事件实现分页加载:

uniapp底部翻页

<template>
  <scroll-view 
    scroll-y 
    @scrolltolower="loadMore"
    style="height: 100vh">
    <!-- 列表内容 -->
    <view v-for="item in list" :key="item.id">
      {{ item.content }}
    </view>

    <!-- 加载状态 -->
    <view v-if="loading" class="loading">加载中...</view>
    <view v-if="noMore" class="no-more">没有更多了</view>
  </scroll-view>
</template>

分页数据请求逻辑

实现分页加载的核心JavaScript逻辑:

export default {
  data() {
    return {
      list: [],
      page: 1,
      pageSize: 10,
      loading: false,
      noMore: false
    }
  },
  methods: {
    async loadData() {
      if (this.loading || this.noMore) return

      this.loading = true
      try {
        const res = await api.getList({
          page: this.page,
          pageSize: this.pageSize
        })

        if (res.data.length) {
          this.list = this.list.concat(res.data)
          this.page++
        } else {
          this.noMore = true
        }
      } finally {
        this.loading = false
      }
    },
    loadMore() {
      this.loadData()
    }
  },
  mounted() {
    this.loadData()
  }
}

优化加载提示

可以添加更友好的加载状态提示:

uniapp底部翻页

.loading, .no-more {
  padding: 20rpx;
  text-align: center;
  color: #999;
}
.loading {
  display: flex;
  justify-content: center;
  align-items: center;
}

使用页面生命周期

在页面生命周期中处理分页重置:

onPullDownRefresh() {
  this.page = 1
  this.list = []
  this.noMore = false
  this.loadData().finally(() => {
    uni.stopPullDownRefresh()
  })
}

第三方组件方案

可以使用uni-ui中的load-more组件简化实现:

<template>
  <view>
    <uni-list>
      <uni-list-item v-for="item in list" :title="item.title" />
    </uni-list>
    <uni-load-more :status="loading ? 'loading' : noMore ? 'noMore' : 'more'" />
  </view>
</template>

注意事项

  • 需要处理网络请求失败的情况
  • 避免重复请求
  • 列表数据较多时考虑虚拟列表优化
  • 安卓平台可能需要额外处理滚动性能问题

以上方案可以根据实际项目需求选择或组合使用。对于复杂场景,还可以考虑使用专门的列表组件如mescroll-uni等第三方解决方案。

标签: 翻页uniapp
分享给朋友:

相关文章

uniapp实名认证

uniapp实名认证

uniapp实名认证实现方法 使用uniCloud实名认证插件 uniapp官方提供了uniCloud的实名认证插件,可快速集成到项目中。插件支持身份证识别、活体检测等功能,需在uniCloud控制台…

uniapp 画板

uniapp 画板

uniapp 实现画板功能的方法 在 uniapp 中实现画板功能,可以通过 canvas 组件结合触摸事件来完成。以下是一个基本的实现方案: 基本画板实现 在 template 中添加 canva…

uniapp 绘图

uniapp 绘图

uniapp 绘图方法 使用 Canvas 组件 uniapp 支持通过 canvas 组件实现绘图功能。在模板中声明 canvas 并设置宽度、高度和 ID,通过 JavaScript 调用绘图 A…

介绍uniapp

介绍uniapp

Uniapp 概述 Uniapp 是一款基于 Vue.js 的跨平台开发框架,允许开发者使用一套代码同时生成 iOS、Android、Web 以及小程序应用。其核心优势在于高效开发和代码复用,大幅降低…

uniapp grid

uniapp grid

uniapp grid 布局实现方法 在 uniapp 中实现 grid 布局可以通过多种方式完成,包括使用内置组件、CSS Grid 或第三方插件。以下是几种常见的实现方法: 使用 uni-gri…

elementui uniapp

elementui uniapp

使用 Element UI 与 UniApp 结合的方法 Element UI 是一个基于 Vue.js 的桌面端组件库,而 UniApp 是一个跨平台开发框架。两者结合需要特殊处理,因为 Eleme…