关于vue上拉加载下拉刷新的问题

关于vue上拉加载下拉刷新的问题

我们在使用vant组件使用list列表和PullRefresh下拉刷新的时候,可以组合起来使用上拉加载,下拉刷新这个一个特性

  • 我们在组件中的代码应该这样写,首先PullRefresh的标签在最外面,然后list列表的标签在里面
    <van-pull-refresh v-model="isLoading" @refresh="onRefresh">
        <van-list
          v-model="loading"
          :finished="finished"
          finished-text="没有更多了"
          @load="this.onLoad"
        >
          <van-cell v-for="item in list" :key="item.consultation_id">
            <order-item :item="item"></order-item>
          </van-cell>
        </van-list>
      </van-pull-refresh>
    
  • 介绍一下van-pull-refresh的几个属性 和方法,van-pull-refresh中的 isloading 和refresh这个方法
  1. isloading这个属性是 是否在加载中,如果加载完成的话,我们让它置为false
  2. refresh这个方法使我们在下来刷新的时候的回调函数
  • 然后是van-list中的loadingfinishedload方法
  1. List 组件通过loading和finished两个变量控制加载状态,当组件滚动到底部时,会触发load事件并将loading设置成true。此时可以发起异步操作并更新数据,数据更新完毕后,将loading设置成false即可。若数据已全部加载完毕,则直接将finished设置成true即可
  2. load方法 就是加载的过程

loading 和 finished 分别是什么含义?

  • List有以下三种状态,理解这些状态有助于你正确地使用List组件:
    非加载中,loading为false,此时会根据列表滚动位置判断是否触发load事件(列表内容不足一屏幕时,会直接触发)
  • 加载中,loading为true,表示正在发送异步请求,此时不会触发load事件
  • 加载完成,finished为true,此时不会触发load事件
    在每次请求完毕后,需要手动将loading设置为false,表示加载结束

在项目中使用下拉刷新上拉加载的过程

  • 首先后端设计好,每页的请求个数和页数。我之前碰到的刷新和加载的这个情况下,请求后端的数据时,需要假如请求的页数和一页的数据个数。
  • 我们在load这个加载函数中,首先就是发送请求获得我们的数据。然后做回调函数,我们在回调函数中,把数据填入list列表中。在每一页的请求后,数据填充过后,我们需要把loading设置为false(这个是加载状态),然后把页数加一。然后判断是否全部数据加载完毕。如果数据全部加载完毕的时候,我们需要把页数调为最初的那个页数,根据后台定义的第一次请求的页数是0或者是1,然后还需要设置数据加载完毕的状态(finished = true
  • onRefresh(下拉函数),这个函数中我们需要重新加载数据。首先我们需要清空list列表里面的数据,然后设置一些参数 如 loading finished isloading这三个参数
  • 我觉得在使用这个功能的时候,注意状态的改变,以及参数的设置。

根据我自己的demo,总结一下这几个参数的设置

  • 首先在data里面的五个参数分别为下面
    data() {
        return {
          count: 0,
          list: [],
          isLoading: false,
          loading: false,
          finished: false,
          page:1,
          per:5
        };
      }
    
  • 然后是onLoad这个方法中的代码以及参数问题
	this.$store
        .dispatch({
          type: 'xxxx', // 请求的方法,在vuex中
          payload: { // 接口所需参数
            page: this.page, // 页数
            per: this.per // 每页个数
          }
        })
        .then(data => {
          console.log(data);
          this.count = data.count; // 后台返回的数据的总个数
          for (let i = 0; i < data.items.length; i++) {
            this.list.push(data.items[i]); // 每一页的数据,放进list中
          }
          // 然后每一页加载完成后,设置this.loading = false;表示加载结束
          this.loading = false;
          this.page++; // 页数加一
          if (this.list.length >= this.count) { // 判断list是不是和count相等,相等就是数据加载完
            this.finished = true; // 设置finished 为true,表示数据加载完毕
            this.page = 1; // 调整页数
          }
        })
        .catch(err=>{
          console.log(err);
        })
  • onRefresh()方法中的参数问题
	this.list = []; // 清空数据
	this.page = 1; //设置页数为1
	this.loading = true; //设置当页加载未完毕
	this.finished = false; //设置数据没有加载完
	this.onLoad('replace');
	this.$toast('刷新成功');
	this.isLoading = false; //isloading这个属性是 是否在加载中,如果加载完成的话,我们让它置为false
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值