微信小程序上拉加载、下拉刷新的使用方法

admin5个月前 (09-04)未分类770

一、定义数据

data() {return {list: [],      //数据列表noMore: false, // 全部加载后底部提示total: 0,      // 总条数data: {page: 1,    // 页码limit: 10   // 每次请求数量},};},

二、启用下拉刷新 

在页面的 .json 配置文件中,将 enablePullDownRefresh 设置为 true

三、监听下拉刷新 

操作下拉刷新时,设置当前页数、总数、请求列表清零等

再次发起请求,请求完毕停止下拉刷新效果

onPullDownRefresh() {this.data.page = 1this.total = 0this.list = []this.record()uni.stopPullDownRefresh()},

 四、上拉触底加载

onReachBottom() {if (this.data.page * this.data.limit >= this.total) {this.noMore = truereturn}this.data.page++ // 让页码值自增+1this.record()},

五、初次加载页面的操作

首次加载页面请求数据后,进行判断:如果数据请求完毕显示‘没有更多了’

onLoad: function(options) {this.recordList();if (this.data.page * this.data.limit >= this.total) {this.noMore = truereturn}},

六、调接口拿数据

每次请求十条数据,并添加到数据列表

async recordList() {const res = await uni.$http.get('/api/recordList', this.data)// console.log(res.data); // 每次请求返回十条数据if (res.statusCode !== 200) return uni.$showErrorMsg("获取充值记录失败")this.list = [...this.list, ...res.data.records]this.total = res.data.total   // 通过接口获取总条数},

七、全部代码

<template>
  <view class="content">
    <uni-row v-for="(item, index) in list" :key="item.index">
       ... ...(需要渲染的数据)
    </uni-row>
    <view class="bottom" v-if="noMore">
      没有更多了
    </view>
  </view>
</template>
 
<script>
  export default {
    data() {
      return {
        list: [],
        noMore: false,
        data: {
          page: 1,
          limit: 12
        },
        total: 0,
      };
    },
    onLoad: function(options) {
      this.recordList();
      if (this.data.page * this.data.limit >= this.total) {
        this.noMore = true
        return
      }
    },
    methods: {
      async recordList() {
        const res = await uni.$http.get('/api/recordList', this.data)
        // console.log(res.data); // 每次请求是十条数据
        if (res.statusCode !== 200) return uni.$showErrorMsg("获取记录失败")
        this.list = [...this.list, ...res.data.records]
        this.total = res.data.total
      },
 
      onPullDownRefresh() {
        this.data.page = 1
        this.total = 0
        this.list = []
        this.record()
        setTimeout(() => {
          uni.stopPullDownRefresh()
        }, 1000);
      },
        
      onReachBottom() {
        if (this.data.page * this.data.limit >= this.total) {
          this.noMore = true
          return
        }
        this.data.page++ // 让页码值自增+1
        this.record()
      },
    }
  }
</script>


相关文章

基于UniAPP开发的微信小程序

基于UniAPP开发的微信小程序

写在前面非常感谢您对本系统的关注!我们非常激动地宣布,我们正式推出全新的版本。如果您想获取更多关于这个令人兴奋的信息的详细信息,请关注我们!了解更多关于如何成为本系统授权的信息。不要错过这个机会,立即...

PHP实现在线更新功能/热更新,实例代码 thinkphp在线更新功能

PHP实现在线更新功能/热更新,实例代码 thinkphp在线更新功能

PHP实现在线更新功能,一个主方法,一个文件下载方法线上项目,实测:public function update() {// 这里省略了版本判断逻辑,根据自己需...

如何用PHP模拟登录并抓取数据 ?

如何用PHP模拟登录并抓取数据 ?

使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据。具体实现的流程如下1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息:1)登录页面的地...

记录一次 if-else 代码优化的完整过程

记录一次 if-else 代码优化的完整过程

让我们来探讨一下如何将出租车叫车应用中的司机分配逻辑,从复杂的嵌套 if 语句中简化,使之更加清晰和易于维护。在之前的项目中,我参与了一款至今仍被广泛使用的出租车叫车应用的开发,虽然我不清楚他们现在使...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。