vant List组件实现上拉加载中 首次进行load事件执行两次的问题

这篇具有很好参考价值的文章主要介绍了vant List组件实现上拉加载中 首次进行load事件执行两次的问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需求:
进行tab切换时,其中一次tab下有上拉加载的功能

问题:
在第一次切换到带有上拉加载列表功能的tab,执行加载list的load事件执行了两次造成数据的重复加载,另外如果这个list的高度全部在可视范围内,首次就会加载两次load事件,如果可视范围只有tab切换的区域则不会出现这种情况

如图所示,tab3下的是具有上拉加载功能的list
vant List组件实现上拉加载中 首次进行load事件执行两次的问题,vue学习笔记,vantui,vue.js,vant,list

解决:
方法一:分开load绑定的事件和第一次加载数据执行事件,并添加:immediate-check=“false”,禁止在初始化时立即执行滚动位置检查。
代码:
注:只添加:immediate-check="false"这个项目中不太好使,还是可能会首次执行两回。

<van-list v-if="firstTabIndex==2" v-model="loading" :finished="finished" finished-text="没有更多啦" offset="10" 
	:immediate-check="false" @load="onLoad">
	<ul class="hotel2-info-ul">
		<li class="hotel2-info-li" v-for="item in dataList" :key="`jx${item.id}`">
			<div class="area">
				<van-icon name="location" /><span class="city-name">名称</span>
			</div>
			<div class="hotel-name"><span>描述{{ item.id }}</span></div>
		</li>
	</ul>
</van-list>

js代码:

export default {
	name: "flight-pay-status",
	data() {
		return {
			dataInfo: {},//调用需要的相关数据
			dataList: [],// 数据
			firstTabIndex: 3,// 一级菜单下标
			secondTabIndex: 0,// 二级菜单下标
			secondTabList: [],// 二级菜单列表
			jxParams: {  //查询信息
				start: 0,
				limit: 10,
				cityCode: ''
			},
			loading: false,
			finished: false,
			refreshing: false,
		};
	},
	methods: {
		// 一级菜单切换
		firstTab(index){
			let initIndex = this.firstTabIndex;
			this.firstTabIndex = index;
			this.dataList = [];
			if(index==0){
				this.getFirstData();
			}else if(index==1){
				this.getSecondData();
			}else if(index==2){
				this.jxParams.start = 0;
				this.dataList = [];
				this.getLoadData();
			}else if(index==3){
				this.getFourData();
			}
		},
		// 切换获取数据
		getLoadData(){
			let para = {
				start: this.jxParams.start,
				limit: this.jxParams.limit,
				otherType: 2,
				cityCode: this.dataInfo.arrivalCityHotelCode
			}
			this.loading = true;
			myAPI.searchAround(para).then(res => {
				if(res.status){
					this.loading = false;
					let datas = res.data.hotels;
					this.dataList = datas;
					this.finished = res.data.total === this.dataList.length;
					this.jxParams.start = 1;
					this.loading = false;
					console.log(this.dataList);
				}else{
					this.tools.tip(res.data);
				}
			})
		},
		//上拉加载
		async onLoad(){
			let para = {
				start: this.jxParams.start,
				limit: this.jxParams.limit,
				otherType: 2,
				cityCode: this.dataInfo.arrivalCityHotelCode
			}
			this.loading = true;
			myAPI.searchAround(para).then(res => {
				if(res.status){
					let datas = res.data.hotels;
					this.dataList = this.dataList.concat(datas);
					if(this.dataList.length < res.data.total){
						this.jxParams.start++;
						this.loading = false;
					}else{
						this.finished = true;
						this.loading = true;
					}
				}else{
					this.tools.tip(res.data);
				}
			})
		},
	}
}

方法二:
这个也可能是样式问题造成的,绿色块儿是异步加载,里面的当图片没到onload事件时候,没渲染出来,宽高都为0。vant 的触底事件判断又在渲染之前。就会瞬间判断没填满当前空间,就会立刻又加载一次。
鉴于此,给这个绿色块儿添加最小高度。文章来源地址https://www.toymoban.com/news/detail-528344.html

到了这里,关于vant List组件实现上拉加载中 首次进行load事件执行两次的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • van-list van-pull-refresh实现上拉加载,下拉刷新

    背景:在移动端项目开发中有列表页面开发,需要实现上拉加载下一页数据,下拉刷新页面。 Vant 是一个轻量、可靠的移动端组件库,使用该框架的van-list组件和van-pull-refresh组件可实现上述功能 van-list组件 :瀑布流滚动加载,用于展示长列表,当列表即将滚动到底部时,会触

    2024年02月15日
    浏览(45)
  • 猿创征文|vue vant-ui数据列表上拉加载更多,下拉刷新功能

    ⭐️⭐️⭐️   作者: 船长在船上 🚩🚩🚩   主页: 来访地址船长在船上的博客 🔨🔨🔨   简介: CSDN前端领域优质创作者,资深前端开发工程师,专注前端开发,在CSDN总结工作中遇到的问题或者问题解决方法以及对新技术的分享,欢迎咨询交流,共同学习。 🔔🔔🔔

    2023年04月12日
    浏览(43)
  • vant 组件van-tabbar实现底部导航

    移动端小白,首次尝试移动H5开发,使用vant2的van-tabbar实现底部导航功能。本文忽略vant使用步骤,项目中使用全局引用。由于查询很多文章有的过于复杂,有的功能未实现,所以简单整理如有问题欢迎留言改正。 底部导航栏简单实现,需要注意的是,组件是需要在所有需要使

    2024年02月05日
    浏览(47)
  • 小程序-基于vant的Picker组件实现省市区选择

    因@vant/area-data部分的市/区数据跟后台使用的高德/腾讯省市区有所出入,故须保持跟后台用同一份数据,所以考虑以下几个组件 1、Area 2、Cascader 3、Picker 因为使用的是高德地图的省市区json文件,用area的话修改结构代价太大,费时费力。接着尝试使用Cascader组件,但这个组件每

    2024年02月12日
    浏览(47)
  • 微信小程序 - scroll-view组件之上拉加载下拉刷新(解决上拉加载不触发)

    最近在做微信小程序项目中,有一个功能就是做一个商品列表分页限流然后实现上拉加载下拉刷新功能,遇到了一个使用scroll-viwe组件下拉刷新事件始终不触发问题,网上很多说给scroll-view设置一个高度啥的就可以解决,有些人设置了高度也不触发,所以在下就研究了一波这个

    2024年02月14日
    浏览(45)
  • 微信小程序——使用 Vant 组件实现 Popup 弹出层(各位置弹出详细代码分享)

    ✅作者简介:2022年 博客新星 第八 。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:微信小程序学习分享 ✨特色专栏:国学周更-心性养成之路 🥭本文内容:微信小程序——使

    2024年02月08日
    浏览(67)
  • 微信小程序开发——使用Vant组件库van-dropdown-menu实现下拉列表切换页面内容

    请先根据官网要求安装好vant组件库并引入相关组件 1、思路 在页面中使用hidden属性判断是否选中当前信息,再隐藏其他所有内容,仅显示所选内容。 2、代码 wxml部分 js部分 3、实际效果(view模块中的内容可以根据实际开发调整)

    2024年02月14日
    浏览(44)
  • 前端vue简单好用的上拉加载下拉刷新组件,支持列表分页 本地分页

    前端vue简单好用的上拉加载下拉刷新组件,支持列表分页 本地分页, 阅读全文下载完整代码请关注微信公众号: 前端组件开发 效果图如下:         #### 使用方法 ```使用方法 !-- pullDown:下拉刷新 back-top: 回到顶部  -- ccPullScroll class=\\\"pullScrollView\\\" ref=\\\"pullScroll\\\" :back-top=\\\"true\\\" :pullDo

    2024年02月08日
    浏览(57)
  • mescroll 在uni-app 运行的下拉刷新和上拉加载的组件

    官网传送门: https://www.mescroll.com/uni.html 最近使用到了mescroll 但是一直都是整个页面的滚动, 最近需求有需要局部滚动, 收藏了一个博主的文章觉得写的还挺好, 传送门: https://blog.csdn.net/Minions_Fatman/article/details/134754926?spm=1001.2014.3001.5506 使用总结 如果使用到的是mescroll-body 在给它

    2024年02月22日
    浏览(65)
  • uniapp 使用组件 uni-list 实现聊天列表功能

    如何使用 uniapp 的组件实现聊天列表的功能呢,翻阅了半天文档,终于找到一个实用的方法,下面是具体的步骤  1、首先需要下载对应的插件 去uniapp的官方文档进行下载(uni-ui - DCloud 插件市场),这里直接下载插件并导入到HBuilderx 中就可以了。  2、接下来就可以直接进行使

    2024年02月09日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包