【Uniapp】关于实现下拉刷新的三种方式

在小程序、h5等地方中,常常会用到下拉刷新这个功能,今天来讲解实现这个功能的三种方式:全局下拉刷新,组件局部下拉刷新,嵌套组件下拉刷新。

全局下拉刷新

这个方式简单,性能佳,最推荐,以下为步骤:

  • 配置pages.json(在需要该功能的页面设置对应属性)

{
    "pages": [
        {
            "path": "pages/index/index",
            "style": {
                "enablePullDownRefresh": true,
               // 下拉 loading 的样式,可选值为 'dark' 或 'light'
                "backgroundTextStyle": "dark"
            }
        }
    ]
}
  • 在页面中监听下拉刷新时间(使用onPullDownRefresh生命周期函数)

<template>
    <view>
        <!-- 页面内容 -->
    </view>
</template>

<script>
export default {
    onPullDownRefresh() {
        // 模拟异步请求数据
        setTimeout(() => {
            // 这里可以编写刷新数据的逻辑,比如重新请求接口获取最新数据
            console.log('下拉刷新完成');
            // 停止下拉刷新动画
            uni.stopPullDownRefresh();
        }, 2000);
    }
};
</script>

scroll-view 组件局部下拉刷新

  • scroll-view 组件中有自定义下拉刷新的属性以及相关方法可以直接使用,但是性能不如全局下拉刷新,且scroll-view 组件停止下拉刷新的方法可能有兼容问题,会使用不了,此时可以用refressher-triggered属性控制下拉刷新的状态。
  • 注意:scroll-view是区域滚动,不会触发页面滚动,无法触发pages.json配置的下拉刷新、页面触底onReachBottomDistance、titleNView的transparent透明渐变。

使用示例

<template>
    <scroll-view
        scroll-y
        refresher-enabled
        @refresherrefresh="onRefresh"
        @refresherrestore="onRestore"
        @refresherabort="onAbort"
    >
        <!-- 滚动内容 -->
        <view v-for="item in list" :key="item.id">{{ item.name }}</view>
    </scroll-view>
</template>

<script>
export default {
    data() {
        return {
            list: [
                { id: 1, name: 'Item 1' },
                { id: 2, name: 'Item 2' },
                { id: 3, name: 'Item 3' }
            ]
        };
    },
    methods: {
        onRefresh() {
            // 模拟异步请求数据
            setTimeout(() => {
                // 这里可以编写刷新数据的逻辑,比如重新请求接口获取最新数据
                console.log('局部下拉刷新完成');
                // 停止下拉刷新动画
                this.$refs.scrollViewRef.finishPullToRefresh();
            }, 2000);
        },
        onRestore() {
            console.log('下拉刷新被复位');
        },
        onAbort() {
            console.log('下拉刷新被中止');
        }
    }
};
</script>

嵌套组件中的下拉刷新

场景:需要在子组件触发下拉刷新功能,但是在pages.json中只能配置父页面的下拉刷新属性

  • 父组件配置全局下拉刷新

在page.json中为父页面配置enablePullDownRefresh为true,并在父组件的onPullDownRefresh生命周期函数中调用子组件的刷新方法。

<template>
    <view>
        <!-- 其他内容 -->
        <child-component ref="childRef"></child-component>
    </view>
</template>

<script>
import ChildComponent from './ChildComponent.vue';

export default {
    components: {
        ChildComponent
    },
    onPullDownRefresh() {
        console.log('父页面触发下拉刷新');
        // 调用子组件的刷新方法
        this.$refs.childRef.refreshData().then(() => {
            // 停止下拉刷新动画
            uni.stopPullDownRefresh();
        }).catch((error) => {
            console.error('刷新数据出错:', error);
            uni.stopPullDownRefresh();
        });
    }
};
</script>
  • 子组件定义刷新方法

<template>
    <!-- 子组件内容 -->
</template>

<script>
export default {
    methods: {
        async refreshData() {
            console.log('子组件开始刷新数据');
            // 这里编写刷新数据的逻辑,比如重新请求接口获取最新数据
            try {
                // 调用获取消息的方法
                await this.getData();
                console.log('子组件数据刷新完成');
            } catch (error) {
                console.error('子组件刷新数据出错:', error);
                throw error;
            }
        },
        // 其他方法...
    }
};
</script>

欢迎指正!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/969377.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

九.Spring Boot使用 ShardingSphere + MyBatis + Druid 进行分库分表

文章目录 前言一、引入依赖二、创建一个light-db_1备用数据库三、配置文件 application-dev.yml四、创建shardingsphere-config.yml完整项目结构 五、测试总结 前言 在现代化微服务架构中&#xff0c;随着数据量的不断增长&#xff0c;单一数据库已难以满足高可用性、扩展性和…

游戏引擎学习第101天

回顾当前情况 昨天的进度基本上完成了所有内容&#xff0c;但我们还没有进行调试。虽然我们在运行时做的事情大致上是对的&#xff0c;但还是存在一些可能或者确定的bug。正如昨天最后提到的&#xff0c;既然现在时间晚了&#xff0c;就不太适合开始调试&#xff0c;所以今天我…

鸿蒙HarmonyOS NEXT开发:横竖屏切换开发实践

文章目录 一、概述二、窗口旋转说明1、配置module.json5的orientation字段2、调用窗口的setPreferredOrientation方法 四、性能优化1、使用自定义组件冻结2、对图片使用autoResize3、排查一些耗时操作 四、常见场景示例1、视频类应用横竖屏开发2、游戏类应用横屏开发 五、其他常…

【新品解读】AI 应用场景全覆盖!解码超高端 VU+ FPGA 开发平台 AXVU13F

「AXVU13F」Virtex UltraScale XCVU13P Jetson Orin NX 继发布 AMD Virtex UltraScale FPGA PCIE3.0 开发平台 AXVU13P 后&#xff0c;ALINX 进一步研究尖端应用市场&#xff0c;面向 AI 场景进行优化设计&#xff0c;推出 AXVU13F。 AXVU13F 和 AXVU13P 采用相同的 AMD Vir…

(篇六)基于PyDracula搭建一个深度学习的软件之新版本ultralytics-8.3.28调试

ultralytics-8.3.28版本debug记录 1传入文件 代码太多不粘贴在这里了&#xff0c;完整代码写在了篇三 def open_src_file(self):config_file config/fold.jsonconfig json.load(open(config_file, r, encodingutf-8))open_fold config[open_fold]if not os.path.exists(op…

计算机毕业设计PySpark+hive招聘推荐系统 职位用户画像推荐系统 招聘数据分析 招聘爬虫 数据仓库 Django Vue.js Hadoop

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

docker配置镜像加速

1.配置方法见阿里云 图1 图2 图3 CentOS脚本 阿里云、腾讯云的镜像仓库从2022年就没有更新了&#xff0c;所以添加以下这么多仓库 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF {"registry-mirrors": ["https://g4f7bois.mirro…

互联网大厂中面试的高频计算机网络问题及详解

前言 哈喽各位小伙伴们,本期小梁给大家带来了互联网大厂中计算机网络部分的高频面试题,本文会以通俗易懂的语言以及图解形式描述,希望能给大家的面试带来一点帮助,祝大家offer拿到手软!!! 话不多说,我们立刻进入本期正题! 一、计算机网络基础部分 1 …

位图,晶圆MAP 边缘算法

例如这样的一张图: 如果想要求外边缘点&#xff0c;即红色区域,首先遍历所有点位&#xff0c;求出每行每列X轴和Y轴的最大值MAX和最小值MIN。然后再次遍历每个点&#xff0c;判断该点的X值&#xff0c;Y值是否是最大值或者最小值&#xff0c;如果是&#xff0c;那么它就是外边…

微信小程序医院挂号系统

第3章 系统设计 3.1系统体系结构 系统的体系结构非常重要&#xff0c;往往决定了系统的质量和生命周期。针对不同的系统可以采用不同的系统体系结构。本系统为微信小程序医院挂号系统&#xff0c;属于开放式的平台&#xff0c;所以在管理端体系结构中采用B/s。B/s结构抛弃了固…

建筑兔零基础自学python记录18|实战人脸识别项目——视频检测07

本次要学视频检测&#xff0c;我们先回顾一下图片的人脸检测建筑兔零基础自学python记录16|实战人脸识别项目——人脸检测05-CSDN博客 我们先把上文中代码复制出来&#xff0c;保留红框的部分。 ​ 然后我们来看一下源代码&#xff1a; import cv2 as cvdef face_detect_demo(…

5g基站测试要求和关键点

5G基站的测试要求涉及多个方面&#xff0c;以确保其性能、覆盖能力、稳定性和合规性。以下是5G基站测试的主要要求和关键点&#xff1a; 一、基础性能测试 射频&#xff08;RF&#xff09;性能测试 发射机性能&#xff1a;验证基站的发射功率、频率误差、调制质量&#xff08;E…

【Git版本控制器】:第一弹——Git初识,Git安装,创建本地仓库,初始化本地仓库,配置config用户名,邮箱信息

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;Linux网络编程 &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 ​ 相关笔记&#xff1a; https://blog.csdn.net/dj…

20250213 隨筆 雪花算法

雪花算法&#xff08;Snowflake Algorithm&#xff09; 雪花算法&#xff08;Snowflake&#xff09; 是 Twitter 在 2010 年開發的一種 分布式唯一 ID 生成算法&#xff0c;它可以在 高併發場景下快速生成全局唯一的 64-bit 長整型 ID&#xff0c;且不依賴資料庫&#xff0c;具…

22.4、Web应用漏洞分析与防护

目录 Web应用安全概述DWASP Top 10Web应用漏洞防护 - 跨站脚本攻击XSSWeb应用漏洞防护 - SQL注入Web应用漏洞防护 - 文件上传漏洞Web应用漏洞防护 - 跨站脚本攻击XSS Web应用安全概述 技术安全漏洞&#xff0c;主要是因为技术处理不当而产生的安全隐患&#xff0c;比如SQL注入…

【Vue3 入门到实战】15. 组件间通信

目录 1. Props 2. 自定义事件 3. mitt 4. v-model 4.1 v-model用在html标签上 4.2 v-model用在组件标签上 4.3 v-model 命名 4.4 总结 5. $attrs 6. $refs 和 $parent 7. provide 和 inject 8. pinia 9. slot 插槽 10. 总结 组件通信是指在不同组件之间传递数据…

云原生AI Agent应用安全防护方案最佳实践(上)

当下&#xff0c;AI Agent代理是一种全新的构建动态和复杂业务场景工作流的方式&#xff0c;利用大语言模型&#xff08;LLM&#xff09;作为推理引擎。这些Agent代理应用能够将复杂的自然语言查询任务分解为多个可执行步骤&#xff0c;并结合迭代反馈循环和自省机制&#xff0…

本地部署DeepSeek摆脱服务器繁忙

由于图片和格式解析问题&#xff0c;可前往 阅读原文 最近DeepSeek简直太火了&#xff0c;频频霸榜热搜打破春节的平静&#xff0c;大模型直接开源让全球科技圈都为之震撼&#xff01;再次证明了中国AI的换道超车与崛起 DeepSeek已经成了全民ai&#xff0c;使用量也迅速上去了…

【EXCEL】【VBA】处理GI Log获得Surf格式的CONTOUR DATA

【EXCEL】【VBA】处理GI Log获得Surf格式的CONTOUR DATA data source1: BH coordination tabledata source2:BH layer tableprocess 1:Collect BH List To Layer Tableprocess 2:match Reduced Level from "Layer"+"BH"data source1: BH coordination…

Postman如何流畅使用DeepSeek

上次写了一篇文章是用chatBox调用api的方式使用DeepSeek&#xff0c;但是实际只能请求少数几次就不再能给回响应。这回我干脆用最原生的方法Postman调用接口请求好了。 1. 通过下载安装Postman软件 postman下载(https://pan.quark.cn/s/c8d1c7d526f3)&#xff0c;包含7.0和10…