Vant中结合使用van-tabs、van-pull-refresh和van-list

Vant中结合使用van-tabs、van-pull-refresh和van-list_第1张图片
van-tabs做标签页,van-pull-refresh结合van-list做下拉刷新和滚动加载。tabs的头部位置不变,只滚动tabs的内容区域。

设置tabs的头部位置不变,只滚动tabs的内容区域:

解决方法:

  1. 给van-tabs包裹一个父元素;

  2.   ::v-deep .van-tabs__content{
        width: 100%;
        height: 100%;
        position: fixed;
        left: 0;
        z-index: 999;
        overflow:scroll;
        padding: 10px 0 70px;
      }
    

tabs切换时,list组件不触发load事件:

解决方法:监听tab切换,重新初始化van-list的加载状态,否则瀑布流滚动加载将不会被再次触发。

this.loading = false
this.finished = false

tabs切换时,如果之前的tab已经滚动到底部,直接点击其他的tab,将也会触发一次onload事件。

这种情况下,切换tab会导致触发两次请求数据的方法。
一次是监听tab切换事件执行的,另一次是由于之前一个tab已经滚动到底部触发的onload事件。

解决方法:设置一个全部变量tabChangeing,监听到tab切换事件时设置tabChangeing为true,在onload事件中,只有判断tabChangeing为false时才请求数据,并总是设置tabChangeing为true。

beforeChange(){
	this.tabChangeing = true
	this.getList();
}
 onLoad(){
    if(!this.tabChangeing){
            this.pageNum++
            this.getList()
    }
    this.tabChangeing = false
}

你可能感兴趣的:(UI框架,Vant,UI框架)