Vant-list上拉加载及下拉刷新问题怎么解决
导读:本文共1404.5字符,通常情况下阅读需要5分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: Vant-list 上拉加载及下拉刷新第一步引入import{Notify,Dialog,Image,List,PullRefresh}from'vant'importVuefrom'vue'Vue.use(Image).use(List).use(PullRefresh)第二步<van-pull-refreshv-mo... ...
音频解说
目录
(为您整理了一些要点),点击可以直达。Vant-list 上拉加载及下拉刷新
第一步引入
import{Notify,Dialog,Image,List,PullRefresh}from'vant'importVuefrom'vue'Vue.use(Image).use(List).use(PullRefresh)
第二步
<van-pull-refreshv-model="refreshing"@refresh="onRefresh"><van-listv-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=falseconstshopId=this.$store.state.user.shopId//这里是ajax请求根据自己业务需求pageList({shopId:shopId,pageNo:this.pageNo,pageSize:2}).then(res=>{if(this.validResp(res)){this.total=res.data.pageNothis.loading=truethis.productList.push(...res.data.dataList)}if(this.productList.length>=parseInt(res.data.pageNo)){this.finished=true}})},1000)},onRefresh(){this.finished=falsethis.loading=truethis.pageNo=0this.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,这样可以避免在下拉刷新的时候触发上拉加载。
</div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:
Vant-list上拉加载及下拉刷新问题怎么解决的详细内容,希望对您有所帮助,信息来源于网络。