当前位置:首页 > 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
分享给朋友:

相关文章

vue翻页实现

vue翻页实现

Vue 翻页实现方法 在 Vue 中实现翻页功能通常需要结合分页组件和数据处理逻辑。以下是几种常见的实现方式: 使用 Element UI 分页组件 Element UI 提供了现成的分页组件 &l…

uniapp安装axios

uniapp安装axios

安装axios 在uniapp项目中安装axios需要确保项目支持node_modules管理。通过npm或yarn安装axios: npm install axios # 或 yarn add…

uniapp开发电视应用

uniapp开发电视应用

开发环境准备 确保已安装HBuilderX最新版本,这是uniapp官方推荐的开发工具。安装Node.js环境,用于依赖管理和打包构建。准备Android Studio或Xcode用于调试和打包TV应…

uniapp视频

uniapp视频

uniapp视频开发基础 uniapp支持通过video组件实现视频播放功能,该组件兼容多端(H5、小程序、App等),基本用法如下: <template> <video…

uniapp前端项目

uniapp前端项目

Uniapp 前端项目开发指南 Uniapp 是一个基于 Vue.js 的跨平台开发框架,支持一次开发,多端发布(如微信小程序、H5、App 等)。以下是关于 Uniapp 前端项目的关键信息:…

uniapp 如何封装request请求

uniapp 如何封装request请求

封装 request 请求的核心思路 在 UniApp 中封装请求通常基于 uni.request,通过统一处理 URL、参数、header 和拦截逻辑提升代码复用性。以下是一个完整封装方案: 创建…