支付宝小程序 | 下拉刷新、自动刷新、上拉加载

下拉刷新

(一)onPullDownRefresh方法

模拟器效果展示

demo.gif

实现如下

1、配置下拉选项

demo.json

{ "pullRefresh": true }

2、定义下拉方法

demo.js

onPullDownRefresh() { //做相应的逻辑处理 },

3、停止下拉

在加载完数据后停止下拉

my.stopPullDownRefresh()

如上案例完整代码如下

demo.axml

<view class="demo"> <text a:if="{{ list.length == 0 ? true: false }}">没数据?试试下拉刷新😆</text> <view a:for="{{ list }}"> {{item.name}} </view> </view>

demo.less

.demo{ display: flex; flex-direction: column; justify-content: center; align-items: center; height: 200px; width: 100%; }

demo.json

{ "usingComponents": {}, "styleIsolation": "apply-shared", "pullRefresh": true }

demo.ts

Page({ data: { list: [], }, onLoad() {}, onPullDownRefresh() { this.getList() }, getList() { setTimeout(()=>{ this.setData({ list: [ { name: '螺蛳粉', value: 1 }, { name: '酸辣粉', value: 2 }, { name: '羊肉粉', value: 3 }, ], }) my.stopPullDownRefresh() },1000) }, })

(二)自定义下拉刷新

参考文档:https://blog.csdn.net/qq_42345108/article/details/124321126

自动刷新

(一)my.startPullDownRefresh() 方法

效果

demo3.gif

调用 my.startPullDownRefresh 后触发下拉刷新动画,效果与用户手动下拉刷新一致(会触发 onPullDownRefresh 监听方法)。

当处理完数据刷新后,my.stopPullDownRefresh 可停止当前页面的下拉刷新。

如上案例完整代码如下

demo.axml

<view class="demo"> <block a:if="{{ list.length == 0 ? true: false }}"> <view a:if="{{ time==0 ? true:false }}" class="button" onTap="handleStartRefresh"> 开启自动刷新 </view> <view a:else> {{time}}秒后自动刷新 </view> </block> <view a:else class="list"> <text>刷新成功😆</text> <view a:for="{{ list }}"> {{item.value}}碗---{{item.name}}</view> </view> </view>

demo.less

.demo { display: flex; flex-direction: column; justify-content: center; align-items: center; width: 100%; padding-top: 60px; .button { display: flex; justify-content: center; align-items: center; width: 100px; height: 40px; border-radius: 20px; color: #FFFFFF; background: #FFA336; } .list{ display: flex; flex-direction: column; align-items: center; } }

demo.json

{ "usingComponents": {}, "styleIsolation": "apply-shared", "pullRefresh": true }

demo.ts

Page({ data: { list: [], loading: false, time: 0, }, onPullDownRefresh() { this.setData({ list: [ ...[...Array(10)].map((_, i) => ({ value: i + 1, name: '螺蛳粉', })), ], }) my.stopPullDownRefresh() }, handleStartRefresh() { this.setData({ time: 5, }) setInterval(() => { if (this.data.time == 1) { my.startPullDownRefresh() return } this.setData({ time: this.data.time - 1, }) }, 1000) }, })

参考文档:https://opendocs.alipay.com/mini/api/ui-pulldown

上拉加载

(一)onReachBottom方法

onReachBottom在上拉触底时触发

模拟器效果展示

demo2.gif

如上案例完整代码如下

demo.axml

<view class="demo"> <view> 没看够?试试上拉加载😆 </view> <view a:for="{{ list }}"> {{item.value}}碗-----{{item.name}} </view> <view a:if="{{ loading }}" class="loading"> 正在加载中~~🌻 </view> </view>

demo.less

.demo{ display: flex; flex-direction: column; justify-content: center; align-items: center; width: 100%; padding-bottom: 30px; .loading{ margin-top: 8px; } }

demo.ts

Page({ data: { list: [ ...[...Array(10)].map((_, i) => ({ value: i + 1, name: '螺蛳粉', })), ], loading: false, }, onReachBottom() { this.setData({ loading: true, }) const data = [ ...[...Array(30)].map((_, i) => ({ value: i + this.data.list.length + 1, name: '螺蛳粉', })), ] setTimeout(() => { this.setData({ list: this.data.list.concat(data), loading:false }) }, 2000) }, })

参考文档:https://opendocs.alipay.com/mini/framework/page-detail#onReachBottom()

(二)scroll-view组件的onScrollToLower方法

<scroll-view scroll-y="{{true}}" onScrollToLower="handleScrollToLower" style="height:100px"> <view a:for="{{ list }}"> {{item.value}}碗-----{{item.name}} </view> </scroll-view>
handleScrollToLower() { //加载数据,做数据处理 },

注:scroll-view必须 设置高度


__EOF__

本文作者杨芋可可
本文链接https://www.cnblogs.com/yangyukeke/p/17266625.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   杨芋可可  阅读(459)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示