话不多说,进入正文,如下图:
在开发一款简单日记小程序的时候,为了突破云开发数据库每次查询只加载20条的限制,于是采用了以下代码:
//获取列表数据
getTask(){
//数据加载中的友好提示
wx.showLoading({
title: '数据加载中',
})
console.log("当前list的长度:",this.data.list.length);
let len = this.data.list.length //当前list的长度赋值给变量len
wx.cloud.database().collection("diary")
.orderBy('create_time', 'desc')
.skip(len) //skip跳过len长度
.get()
.then(res=>{
//数据加载成功,隐藏加载提示
wx.hideLoading()
console.log("查询成功",res);
//数据加载完成的友好提示
let dataList = res.data
if(dataList.length<=0){
wx.showToast({
title: '数据加载完成',
icon:"none"
})
}
this.setData({
//保留前面加载过的数据,使用concat连接
list:this.data.list.concat(res.data)
})
})
.catch(err=>{
//数据加载失败,隐藏加载提示
wx.hideLoading()
console.log("查询失败",err);
})
},
但是当想要实现下拉刷新的时候,不能重复执行此代码,或者说重复执行此代码需要传递新值,不然不能够执行刷新操作,只会实现触底加载的效果。
由于不是深耕页面卸载及页面加载显示此道,决定采用微信原有的api来实现页面卸载后重新加载的效果以代替刷新的目的,代码如下:
onPullDownRefresh: function () {
wx.redirectTo({
url: '../diary/diary',
})
},
效果如下:
总结:对于页面数据不大的小程序,可以选择此方法实现页面的自动刷新,下拉刷新。目前暂没有发现此方法带来的bug,如果有大佬有更好的方法还请不吝赐教。