当前位置:网站首页>微信小程序触底加载与下拉刷新的实现
微信小程序触底加载与下拉刷新的实现
2022-07-05 10:01:00 【InfoQ】
触底加载
- 封装一个loader函数
- 在监听页面加载的时候触发这个loader函数
- 在监听到触底的时候再次触发这个函数
onLoad: function (options) {
this.loadBooks(this.data.books.length)
},
onReachBottom: function () {
this.loadBooks(this.data.books.length)
},
loadBooks: function () {
},
onload
onReachBottom
loader函数思考
skip(n)
loader函数实现
- 调用wx云开发的api,
skip(n)
从集合的第n项开始获取limit(n)
获取至多n个元素。
- 通过get获取相应数据,这里为n项后6个数据。
- 通过
cancat()
实现数组的合并需要注意的是这里的limit(n)
直接使用是有20的长度限制,如果有刚需,需要获取20个以上的数据集合,那么我们可以在云函数中去解决。
loadBooks: function (n) {
wx.cloud.database().collection('books').skip(n).limit(6).get().then(res => {
console.log(res.data)
this.setData({
books: this.data.books.concat(res.data)
})
})
},
触底加载动画
<view class="loader" wx:if="{{isLoader}}">
<view class="dot"></view>
<view class="dot"></view>
<view class="dot"></view>
<view class="dot"></view>
<view class="dot"></view>
</view>
.dot {
width: 24rpx;
height: 24rpx;
background: #3ac;
border-radius: 100%;
display: inline-block;
animation: slide 1s infinite;
}
.dot:nth-child(n) {
animation-delay: 0.1s;
background: #6cd793;
}
@keyframes slide {
0% {
transform: scale(1);
}
50% {
opacity: .3;
transform: scale(2);
}
100% {
transform: scale(1);
}
}
触底加载的优点
下拉刷新
- 在相应页面的同级json文件中配置一下
enablePullDownRefresh
使其为true
,这里是开启对应页面的下拉刷新设置
{
"usingComponents": {},
"enablePullDownRefresh": true,
}
- 使用
onPullDownRefresh
监听用户下拉动作
onPullDownRefresh: function () {},
- 调用wx的加载api
onPullDownRefresh: function () {
console.log(1)
//在标题栏中显示加载
wx.showNavigationBarLoading()
wx.showLoading({
title: '刷新中...',
})
wx.cloud.database().collection('books').skip(0).limit(6).get().then(res => {
this.setData({
books: res.data
})
wx.hideLoading();
//隐藏导航条加载动画
wx.hideNavigationBarLoading();
//停止下拉刷新
wx.stopPullDownRefresh();
})
},
wx.showNavigationBarLoading()
在导航条进行显示加载动画
wx.hideNavigationBarLoading()
隐藏导航条加载动画
wx.stopPullDownRefresh()
停止下拉刷新
最后
边栏推荐
- Flink CDC cannot monitor MySQL logs. Have you ever encountered this problem?
- MySQL数字类型学习笔记
- Using directive in angualr2 to realize that the picture size changes with the window size
- 天龙八部TLBB系列 - 单体技能群伤
- 请问大佬们 有遇到过flink cdc mongdb 执行flinksql 遇到这样的问题的么?
- 字节跳动面试官:一张图片占据的内存大小是如何计算
- > Could not create task ‘:app:MyTest.main()‘. > SourceSet with name ‘main‘ not found.问题修复
- Tianlong Babu TLBB series - about items dropped from packages
- vscode的快捷键
- Hard core, have you ever seen robots play "escape from the secret room"? (code attached)
猜你喜欢
程序员搞开源,读什么书最合适?
Advanced opencv:bgr pixel intensity map
A high density 256 channel electrode cap for dry EEG
C语言实现QQ聊天室小项目 [完整源码]
WorkManager學習一
The most complete is an I2C summary
【小技巧】获取matlab中cdfplot函数的x轴,y轴的数值
能源势动:电力行业的碳中和该如何实现?
苹果 5G 芯片研发失败?想要摆脱高通为时过早
Unity particle special effects series - the poison spray preform is ready, and the unitypackage package can be used directly - next
随机推荐
IDEA新建sprintboot项目
Constraintlayout officially provides rounded imagefilterview
Atcoder beginer contest 254 "e BFS" f st table maintenance differential array GCD "
The king of pirated Dall · e? 50000 images per day, crowded hugging face server, and openai ordered to change its name
vscode的快捷键
能源势动:电力行业的碳中和该如何实现?
How to get the STW (pause) time of GC (garbage collector)?
[论文阅读] CKAN: Collaborative Knowledge-aware Atentive Network for Recommender Systems
How to write high-quality code?
. Net delay queue
php解决redis的缓存雪崩,缓存穿透,缓存击穿的问题
How to judge that the thread pool has completed all tasks?
程序员搞开源,读什么书最合适?
ConstraintLayout的流式布局Flow
C#函数返回多个值方法
把欧拉的创新带向世界 SUSE 要做那个引路人
Glide advanced level
Workmanager Learning one
Design of stepping motor controller based on single chip microcomputer (forward rotation and reverse rotation indicator gear)
ArcGIS Pro creating features