vant组件list上拉刷新加载的问题

vant组件list的一些问题
在这一次的小程序开发中,使用vant的list列表,刚开始都是在网上找的很多例子参考,但是他们的都会出现很多小问题,还有的会重复加载数据和多次请求接口。经过多次的修改后发现这种方法完美结局以上问题。页面不会多次请求接口,也不会重复数据,更不会无限刷新。数据只有一条的情况下也不会有异常。我看有些码友说数据长度不够会重复加载来填充页面高度,我这样写没有出现这种情况。刚好遇到的小伙伴们可以参考这种方法!我这里是结合tabs做的列表,两个列表数据需要把方法分开,以免数据和参数干扰。

HTML代码部分

<van-tabs>
        <van-tab title=“已上报">
                   <van-pull-refresh v-model="refreshing" :head-height="20" @refresh=“onRefresh">
                   <van-list
                        v-model=“loading”
                       :finished="finished"
                       finished-text=“没有更多了!"
                       :immediate-check="true"
                       :offset="50"
                       @load=“onLoad"
                  >
                  <div  v-for="(item,index) in appearList" :key="index">
                        <div>{{item.name}}</div>
                         <div>{{item.code}}</div>
                 </div>
                       </van-list>
                  </van-pull-refresh>
          </van-tab>
          <van-tab title=“待修改">
                 <van-pull-refresh v-model="isrefreshing" :head-height="20" @refresh=“isonRefresh">
                       <van-list
                                 v-model="isloading"  
                                 :finished="isfinished"
                                 finished-text=“没有更多了!"
                                 :immediate-check="true"
                                 :offset="50"
                                 @load=“isonLoad"
                            >
                                  <div v-for="(item,index) in editList" :key="index">
                                               <div>{{item.name}}<div>
                                  </div>             
                          </van-list>
                       </van-pull-refresh> 
          </van-tab>
          </van-tabs>

JS代码部分

     data(){
        return{
           refreshing:false,
           loading:false,
           finished:false,
           isrefreshing:false,
           isloading:false,
           isfinished:false,
           pageNum:1,
           pageNumber:1,
           pageSize:10,
           appearList:[],
           editList:[]
     }
     } 
     methods:{
         onLoad(){
                  this.getreviewlog()
      },
      isonLoad(){
                   this.getinfoData()
    },
    onRefresh(){
                     this.pageNum=1
                      this.loading=true
                      this.finished=false
                      this.getreviewlog()
    },
    isonRefresh(){
                   this.pageNumber=1
                   this.isloading=true
                   this.isfinished=false
                   this.getinfoData()
  },
  getinfoData(){
             let data={
                       "data":{},
                          "pageNum":this.pageNumber,
                          "pageSize":this.pageSize
             }
        this.isloading=true;
        this.$axios(data).then(()=>{
                       if(res.data.data){
                                if(this.isrefreshing){
                                     this.editList=[],
                                     this.isrefreshing=false
                             }
                             // 每次的数据请求后数据需要合并
                             this.editList=this.editList.concat(res.data.data.list)
                             this.isloading=false
                              // 把当前的页码赋值给变量
                                 this.pageNumber=res.data.data.nextPage;
                                 // 如果是最后一页则停止加载
                                 if(res.data.data.isLastPage){
                                          // 加载结束不再出触发滚动条
                                           this.isfinished=true
                                 }
                         }else{
                                    // 数据如果没有返回直接加载完成
                                        this.isfinished=true
                         }
        }).catch((err)=>{
              // 在数据加载异常的情况下停止加载
                this.isloading=false;
                this.idfinished=true
        })
  },
  getreviewlog(){
           let data={
                     "data":{},
                       "pageNum":this.pageNum,
                         "pageSize":this.pageSize
             }
           this.loading=true;
           this.$axios(data).then((res)=>{
                       if(res.data.data){
                              // 如果是下拉刷新则先清空
                              if(this.refreshing){
                                        this.appearList=[]
                                        this.refreshing=false
                              }
                              this.appearList=[…this.appearList,…res.data.data.list];
                              // 取消loading效果
                                   this.loading=false
                                   this.pageNum=res.data.data.nextPage
                                   // 如果当前是最后一页则停止加载
                                   if(res.data.data.isLastPage){
                                         this.finished=true
                             }
                       }else{
                              // 数据如果没有返回则直接加载结束
                             this.finished=true
                       }   
              }).catch((err)=>{
                     //   数据记载异常的情况下停止加载
                      this.loading=false;
                       this.finished=true
              })
      }
}
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码De搬运工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值