踩坑日记之微信小程序云开发借助wx.redirectTo实现页面刷新功能的可行性及其举列

话不多说,进入正文,如下图:

在开发一款简单日记小程序的时候,为了突破云开发数据库每次查询只加载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,如果有大佬有更好的方法还请不吝赐教。

猜你喜欢

转载自blog.csdn.net/sdqmrj/article/details/126458802