欢迎来到代码驿站!

vue

当前位置:首页 > 网页前端 > vue

浅谈Vant-list 上拉加载及下拉刷新的问题

时间:2022-07-30 10:54:49|栏目:vue|点击:

Vant-list 上拉加载及下拉刷新

第一步引入

import { Notify, Dialog, Image, List, PullRefresh } from 'vant'
import Vue from 'vue'
Vue.use(Image).use(List).use(PullRefresh)

第二步

<van-pull-refresh v-model="refreshing" @refresh="onRefresh">
      <van-list v-model="loading" :finished="finished" finished-text="没有更多了" @load="onLoad">
          <!-- 这里根据自己需要展示数据 -->
       </van-list>
    </van-pull-refresh>

第三步

 data () {
    return {
      productList: [], //异步查询数据
      loading: false, //自定义底部加载中提示
      finished: false,//自定义加载完成后的提示文案
      refreshing: false,//清空列表数据
      pageNo: 0 //当前页码
    }
  }

第四步

  methods: {
    onLoad () {
      this.pageNo++
      setTimeout(() => {
        if (this.refreshing) {
          this.productList = []
          this.refreshing = false
        }
        this.loading = false
        const shopId = this.$store.state.user.shopId
        //这里是ajax请求  根据自己业务需求
        pageList({ shopId: shopId, pageNo: this.pageNo, pageSize: 2 }).then(res => {
          if (this.validResp(res)) {
            this.total = res.data.pageNo
            this.loading = true
            this.productList.push(...res.data.dataList)
          }
          if (this.productList.length >= parseInt(res.data.pageNo)) {
            this.finished = true
          }
        })
      }, 1000)
    },
    onRefresh () {
      this.finished = false
      this.loading = true
      this.pageNo = 0
      this.onLoad()
    }
    }

vant下拉刷新与上拉加载一起使用问题

下拉刷新触发两次 list与pull

//下拉刷新
 onRefresh() {
                this.list = [];
                this.curPage = 1;
                this.finished = true;
                this.getData();
  },
getData() {
                this.isLoading = false;
                getList({
                    curPage: this.curPage,
                    pageSize: this.pageSize
                }).then((res) => {
 
                    this.listLoading = false;
 
                    if (res.code == 200) {
                        this.list = this.list.concat(res.data.list);
                        this.curPage = res.data.nextPage;
                        if (this.list.length >= res.data.total) {
                            this.finished = true;
                        }else {
                            this.finished = false;
                        }
                    }
                })
            },

原因是在于下拉刷新的时候触发了上拉加载,所以执行了两次

解决方法是

先将list组价的finished=true,数据加载完了在判断该值应该是true还是false,这样可以避免在下拉刷新的时候触发上拉加载。

上一篇:Vue.use()的用法和install的用法解析

栏    目:vue

下一篇:Vue3.0中如何监听props方法

本文标题:浅谈Vant-list 上拉加载及下拉刷新的问题

本文地址:http://www.codeinn.net/misctech/209320.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有