uni-app下拉刷新,获取数据后停止刷新

本文探讨了在微信小程序中如何在'pages/goods/goods'页面实现下拉刷新功能,比较了两种方法:一种是利用async/await在onPullDownRefresh回调中获取数据并停止刷新,另一种是在getGoodsList方法中传入停止刷新的回调。作者倾向于方法1的纯粹性,但方法2的callBack技巧也有所启发。
摘要由CSDN通过智能技术生成
一.在pages.json该页面打开下拉刷新
"path": "pages/goods/goods",
"style": {
     "navigationBarTitleText":"商品列表",
     "enablePullDownRefresh":true
}
二.下拉刷新的具体实现
方法1

在onPullDownRefresh使用数据刷新,由于getGoodsList()添加了async,因此返回的是Promise,可以使用.then()执行接下来的停止刷新的操作。具体async详细解释:跳转链接
onPullDownRefresh如下:

onPullDownRefresh () {
  this.goods = []
  this.pagenum = 1
  this.flag = false
  setTimeout(() => {
  this.getGoodsList().then(() =>{
    // console.log('刷新完了')
    uni.stopPullDownRefresh()
  })
  },1000)
}

getGoodsList()如下:

async getGoodsList () {
  const res = await this.$myRequest({
    url:'/goods/search?pagenum='+this.pagenum+'&pagesize='+this.pagesize
  })
  // 获取下一页数据,依旧保留原数据:通过展开符合并
  this.goods = [...this.goods, ...res.data.message.goods]
  // 如果没有数据了
  if (this.goods.length == res.data.message.total){
    this.flag = true
  }
},
方法2

在onPullDownRefresh中的getGoodsList()参数中添加函数

onPullDownRefresh () {
  this.goods = []
  this.pagenum = 1
  this.flag = false
  setTimeout(() => {
  this.getGoodsList(() => {
    uni.stopPullDownRefresh()
  })
}

getGoodsList()修改后如下:

async getGoodsList (callBack) {
  const res = await this.$myRequest({
    url:'/goods/search?pagenum='+this.pagenum+'&pagesize='+this.pagesize
  })
  // 获取下一页数据,依旧保留原数据:通过展开符合并
  this.goods = [...this.goods, ...res.data.message.goods]
  // 如果没有数据了
  if (this.goods.length == res.data.message.total){
    this.flag = true
  }
  callBack && callBack()
},
三、两个方法对比

相较于方法2,个人更喜欢方法1些,getGoodsList()是获取数据的方法,不喜欢在里面添加控件控制的方法。不过方法2里面的callBack && callBack()学到的时候我觉得挺绝的。

uni-app中,可以使用uni.stopPullDownRefresh()方法来停止下拉刷新。这个方法可以在执行完刷新操作后调用,以终止刷新状态。此外,还可以使用mescroll的uni版本来实现下拉刷新和上拉加载的功能。mescroll是一个在uni-app中特别适用的组件,支持一套代码编译到多个平台,包括iOS、Android、H5和小程序等。它已经相当完善和实用,因此推荐使用。如果想在uni-app中实现全局下拉刷新,则需要在pages.json文件中的globalStyle对象中开启enablePullDownRefresh属性。如果只想在特定页面中开启下拉刷新,则可以在pages.json文件中的pages数组中找到对应的页面,并在该页面的style属性中开启enablePullDownRefresh属性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [uniapp 下拉刷新](https://blog.csdn.net/weixin_51014776/article/details/128346430)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [uniapp几种实现下拉刷新的方式](https://blog.csdn.net/C1091045324/article/details/128000726)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值