总结uni中的下拉刷新和上拉加载

uni-app中有几种方式实现加载和刷新,下面我就分别介绍一下(我是使用的vue3进行开发)

页面实现刷新和加载

1. 首先我们要在配置文件中添加配置项(pages.json)

js 复制代码
 "enablePullDownRefresh": true

配置完就能看到下拉刷新和上拉加载的动作了,具体的逻辑需要自定义完成

2. 在页面中引入两个钩子函数

onReachBottom是上拉加载会触发的钩子函数

(onPullDownRefresh)是下拉刷新触发的钩子函数

js 复制代码
import { onReachBottom, onPullDownRefresh } from '@dcloudio/uni-app';

3. 自定义实现加载和刷新逻辑

  • 下拉刷新

这里需要注意onPullDownRefresh函数与onLoad钩子函数同级

js 复制代码
onLoad( ()=> {})

onPullDownRefresh(() => {
    GetOrderList(); // 获取数据的函数
    setTimeout(() => {
        //结束下拉刷新
        uni.stopPullDownRefresh();
    }, 1000);
});

这里的uni.stopPullDownRefresh是关闭下拉刷新动作的

如果你还需要其它的操作,可以去官网找对应的api onPullDownRefresh | uni-app官网 (dcloud.net.cn)

  • 上拉加载

上拉加载也就是分页加载,所以我们需要定义分页加载的数据

js 复制代码
const pageParams = ref({
    page: 1,
    pageSize: 3,
});
js 复制代码
onReachBottom(() => {
    pageParams.value.page++;
    // 这里的逻辑是根据后端放回的数据总数/每页条目数向上取整,然后跟+1后的page作比较
    if (pageParams.value.page <= Math.ceil(totalCount.value / pageParams.value.pageSize)) {
        GetOrderList(); // 获取自己的数据
    } else {
        loadmoreStatus.value = 'nomores';
    }
});

这样一个简单的上拉刷新和下拉加载就实现了。 但是上拉的时候是没有动画的,这就导致程序比较单一,我在这里使用uView-plus中的u-loadmore组件,大家也可以进行参考。uView-plus 3.0

局部实现刷新和加载

这里我们是使用了scroll-view标签上的属性和方法来实现uni-app官网

  • 下拉刷新
  1. 启用下拉刷新: 添加 refresher-enabled 属性。
  2. 下拉刷新事件:绑定 @refresherrefresh 事件。
  3. 添加 下拉刷新状态 标记: 添加 refresher-triggered 属性,用于关闭动画的。
  4. 下拉刷新事件内部:主要是重新获取数据,当数据获取成功后,主动关闭下拉刷新动画。注意在多个请求的情况下,需要用 Promise.all() 等所有请求都结束了,再关闭动画。
  • 上拉加载
  1. 定义 pageParams 对象,存储分页参数,包括页码 page 和每页数据量 pageSize
  2. 定义 finish 响应式引用,表示是否已加载完所有数据。
  3. 滚动触底事件:给 scroll-view 组件绑定 @scrolltolower 事件。
  4. 在事件内部需要判断是否已加载完所有数据,没有结束就继续发送请求,同时页码要累加,获取的数据要追加到原数组后,如果分页已结束,就更新 finish 标记,并提醒用户。

注意:使用竖向滚动时,需要给 <scroll-view> 一个固定高度,通过 css 设置 height;使用横向滚动时,需要给<scroll-view>添加white-space: nowrap;样式

只有给scroll-view标签设置固定高度时,才可以实现上拉加载

因为我还没有写完代码,等我写完这部分代码,再回来补充。

相关推荐
醉城夜风~15 分钟前
CSS盒模型(Box Model)
前端·css
雪隐1 小时前
个人电脑玩AI-15让5060 Ti给你打工——MiniMax H3 本地部署实录:一个自带录音棚的视频模型,和它的 NVFP4 瘦身奇遇
前端·人工智能·后端
GuWenyue1 小时前
不用第三方SDK!Vue3原生Fetch实现DeepSeek流式输出,90%前端都会踩的分片解析坑一次性解决
前端·人工智能·llm
独隅1 小时前
前端离线暂停更新策略:Service Worker 与 PWA 实战指南
前端
不如摸鱼去2 小时前
Wot UI 2.3.0 发布:二维码组件来了,Open Wot 与 wot-starter 同步更新
前端·ui·微信小程序·前端框架·uni-app
Cloud_bread2 小时前
从ReAct到自主闭环:Agentic Coding核心执行引擎的技术演进
前端·react.js·前端框架
cidy_982 小时前
OptMem 使用教程
前端
杉氧2 小时前
用 Compose 挑战交互与动效天花板:ComposeCraftLab 开源实验室全解析
android·前端·kotlin
Canace3 小时前
AI 生成到 90% 突然断了:你的解决方案是?
前端·人工智能
TinssonTai3 小时前
Vite 8 版 Chrome 插件全家桶,popup/options/sidepanel 一次集齐
前端·vue.js