vant-list使用,请求接口之后会多几次load加页面(详细解释,动图演示)

news2024/9/29 7:33:39

页面实现效果:在页面中使用了van-tabs组件和van-list组件来实现页面布局和功能。

问题描述:在第一个标签下,向下滚动page超过了2页之后,有点击tab切换标签,接口调用了多回。

解决问题关键:

  1. loading和finished在什么时候设置false和true值

  1. 要关注van-list包裹内容高度是否超出了可视区域存在滚动情况了。

loading和finished 标识什么?

告诉van-list什么时候可以执行load方法。官方文档在这里解释过了。

操作好这两个字段的值,就能掌握好获取数据的时机,避免切换时候疯狂的执行接口的问题

页面布局:

处理loading和finished

getList(clear = false) {
      this.noMore = false
      if (clear) {
        this.list = []
      }
      this.$axios({
        method: 'get',
        params: {
          State: this.active,
          PageSize: 20,
          PageIndex: this.page,
          RedpacketBusiness: 0
        },
        url: '/api/abccc/List'
      }).then((res) => {
        if (res.PageResult.length > 0) {
          this.list.push(...res.PageResult)
          this.page = res.PageIndex
            //如果当前页是最后一页的情况下
          if (
            Math.ceil(parseInt(res.TotalRecord) / 20) == 1 ||
            this.page == Math.ceil(parseInt(res.TotalRecord) / 20)
          ) {
            this.noMore = true
            //标识van-lis加载结束,不是因为你滚动再去刷新
            this.finished = true
          }
          // 如果当前页小于总页数
          if (this.page < Math.ceil(parseInt(res.TotalRecord) / 20)) {
            //切换到下一个tab时候调完接口,确认列表有没有获取完全
            this.finished = false
          }
        } else {
          //接口返回数据为空时候就可以直接赋值为结束状态
          this.finished = true
          if (this.list.length == 0) {
            this.empty = true
            this.noMore = false
          } else {
            this.noMore = true
            this.empty = false
          }
          if (this.page == 1) {
            this.list = []
          }
        }
        this.loading = false
      })
    },

标签切换的时候还要处理什么:因为二次封装,在外部tab的active如何变化的就不赘述,内部如何监听,如何调用了getList。使用prop获取从外部传入的active值并监听。

没有达到van-list的可视区域高度,接口还是会多加载。

这是一定会执行的,那怎么破解呢?vant-list 为什么会自己去加载,第一你获取的数据渲染成元素之后的高度没有超越可视窗口。如下截取。但是这个页面本来就一条数据啊,那你就应该考虑获取数据时候传入的pagesize的大小。有没有考虑的,传20页和5页的区别呢。

  1. 5页(极端假设)的情况下,如果你的内容小于了可是窗口,第一导致load不能触发,第二侥幸可视窗口高度本来就小,能滚到底load触发了,你可能在tab0的时候成功获取了page=2的内容了,但在切换tab时候就开始不受控值乱掉接口了。 总结其原因就是首先测试不要拿5为pageSize测试,一般接口后端给要求pageSize=20或者更大。是因为产品在设置时候是会考虑到,触底加载事件的触发的。如果你的可视窗口高度远大于接口给定的20*itemHeight ,滚动不起来了,没办法加载数据了,直接跟产品和后端说明,改大pageSize数量。这是产品设计时候的错误。 那上面描述这种情况,tab切换了,又进行自动加载数据的情况前端就不要想着制止了(更全面的来说,可控但是真没必要前端增加额外参数来控制了),因为van-list 也是害怕你填不满页面,实现不了下一步滚动在帮你加载充足数据上来。pageSize过小的情况还会造成数据混乱,可能你切换后的数据是空数组push,但是通过vant-list补充之后,那表里面可能会有两条一样的。所以,调整接口pageSize最为合理。

  1. 20页的情况下是不会出现tab切换之后van-list自行调接口的问题的,哪怕是tab=1时候获取数据只有一条。因为这个时候,getList中逻辑已经空了finished=true为结束状态了,van-list不会在 刷新了。 如果tab=1,内容为21条,切换过去时候它已经获取了20条,内容高度已经大于可视窗口高度,van-list不会帮你去填充了。

总结:编写完成后测试图方便少构造数据,pageSize为5测试的,那问题多的啊。浏览网上的解决办法,都有提到内容没达到可视窗口的情况,之后自己捋了一下,哈,自己坑自己。

演示一下:vant-list 他在帮你补全内容高度的过程 ,这里调整窗口高度,帮你加载的次数是不同的。

这个是是比较高的时候。多调了两回,直至内容全部调完了,内容高度还没有达到可视窗口高度

多调了一会,窗口比较矮的时候

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/381395.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

爆文制造机!小红书热榜3个方向,告诉你选题诀窍!

我们知道&#xff0c;不论是达人创作内容&#xff0c;还是品牌制定Brief&#xff0c;都需要提前调研筛选海量信息&#xff0c;这时候如果有一个自己的内容素材库&#xff0c;就省事多啦。按照内容需求&#xff0c;我们可以按3个角度划分小红书内容素材&#xff1a;笔记类型、竞…

MyBatis的简单使用

MyBatis是一个优秀的持久型框架用于简化JDBC开发&#xff0c;JDBC的原生写法普遍都很麻烦&#xff0c;还要写原汁原味的sql语句&#xff0c;mybatis将很多东西都放到了配置文件里面然后用少量代码简化了免除了几乎所有的JDBC代码以及设定参数和获取结果集的工作。MyBatis 可以通…

使用D3绘制力导向图遇到的坑

目录1. 不同D3版本差异2. D3 V4版本绘制力导向图基本流程3. 跨域问题现象原因解决办法4. 异步赋值现象原因解决办法1. 不同D3版本差异 V3&#xff1a;通过d3.layout.force()将节点、连接线的数据转换成d3力导向图能够使用的数据结构 var force d3.layout.force().nodes(node…

哪些工具可以实现在线ps的需求

在线Photoshop有哪些工具可以选择&#xff1f;在 Adobe 的官网上就能够实现&#xff0c;很惊讶吧&#xff0c;其实 Adobe 官方推出了在线版本的 Photoshop 的&#xff0c;尽管目前还是 Beta版本&#xff0c;但其实也开放了蛮久了。编辑切换为居中添加图片注释&#xff0c;不超过…

安卓手机用WIFI无线调试adb

1、准备连接 1、首先将电脑和手机连接同一个WIFI&#xff0c;并插上数据线 2、打开电脑CMD,输入命令adb start-server开启adb服务 3、输入adb devices 查询已连接的设备 List of devices attached 505e894 device 这样代表已连接成功&#xff0c; 505e894 。 505e894是udid&…

蓝桥杯真题(JAVA)--分巧克力

题目描述儿童节那天有 K 位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。小明一共有 NN 块巧克力&#xff0c;其中第 i块是HiWi 的方格组成的长方形。为了公平起见&#xff0c;小明需要从这 NN 块巧克力中切出 K 块巧克力分给小朋友们。切出的巧克力需要满足&…

SiC MOSFET驱动电压的分析

SiC MOSFET驱动电压的分析 tips:资料来自富昌电子&#xff0c;及各个模块数据手册。 1.常见的Vgs与Vgs(th)&#xff0c;以及对SiC MOSFET应用的影响 驱动电压Vgs和栅极电压阈值Vgs(th)关系到SiC MOSFET在应用过程中的可靠性&#xff0c;功率损耗(导通电阻)&#xff0c;以及驱…

极光笔记 | 极光PUSH服务助力企业提升抢单速度

随着硬件、软件、网络等不断发展、完善&#xff0c;互联网已经渗透到了日常生活中的方方面面&#xff0c;在直接赋能原有行业服务的同时也带来了很多新的服务模式&#xff0c;给人们日常生活带来了极大便利。例如&#xff1a;外卖、快递、跑腿等相关业务更是在我们日常生活中随…

CHAPTER 2 Web HA集群部署 - Heartbeat

Web HA集群部署 - Heartbeat1. Heartbeat 概述1.1 Heartbeat主要组成部分2. 环境依赖2.1 环境及组件软件2.2 关闭firewalld & selinux2.3 配置双机互信&#xff0c;SSH密钥登录​​2.4 同步时间&#xff08;以主节点时间为准&#xff09;2.5 配置域名解析3 安装软件3.1 安装…

你有“ChatGPT综合征”吗:想搞钱,或是失业焦虑?

最近互联网圈里有一个“顶流”&#xff0c;ChatGPT上线仅5天&#xff0c;注册用户数就突破100万&#xff0c;今年2月的月活跃用户已经突破了1亿。ChatGPT的热度有增无减&#xff0c;过不了多久&#xff0c;ChatGPT这个词就会从一线城市的写字楼席卷到农村老家的饭桌上。 互联网…

自动化测试难点案例分析,其实自动化你用错方向还不如不用

随着国内企业软件开发及测试水平的提升&#xff0c;许多企业开始尝试开展自动化测试的应用&#xff0c;以提高测试效率和测试质量。虽然在国外自动化测试工具应用已经很普遍&#xff0c;但国内许多企业对于软件自动化测试的理解还停留在表面上&#xff0c;没有深入的理解到企业…

SpringMVC的常用组件和工作流程及部分注解解析

一丶SpringMVC常用的组件 1.前端控制器DispatcherServlet 作用&#xff1a;统一处理请求和响应。除此之外还是整个流程控制的中心&#xff0c;由 DispatcherServlet 来调用其他组件&#xff0c;处理用户的请求 接收请求&#xff0c;响应结果&#xff0c;相当于转发器&#xff…

参考 Promise/A+ 规范和测试用例手写 Promise

前言 这可能是手写promise较清晰的文章之一。 由浅至深逐步分析了原生测试用例&#xff0c;以及相关Promise/A规范。阅读上推荐以疑问章节为切入重点&#xff0c;对比Promise/A规范与ECMAScript规范的内在区别与联系&#xff0c;确定怎样构建异步任务和创建promise实例。然后开…

JavaSE18-面向对象-内部类

文章目录一、局部内部类二、成员内部类三、静态内部类四、匿名内部类一、局部内部类 把类定义在方法中。对象创建格式&#xff1a;直接在定义内部类的方法中创建。如果在该方法外就不能使用该局部内部类了。应用场景&#xff1a;如果需要定义一个在方法中临时使用的类可以使用…

SpringCloud(微服务)学习篇(一)

SpringCloud(微服务)学习篇(一) 1 nacos的下载和配置 1.1 进入官网 nacos官网 1.2 点击nacos➡点击最新稳定版本 1.3 往下翻并点击nacos-server-2.2.0.zip,此时就已经开始下载了 1.4 把下载好的压缩包解压到没有中文路径的目录里面 1.5 修改application.properties文件 1.…

Testlink相关功能使用部分总结

1.首页面&#xff08;普通用户&#xff0c;测试用例创建用户的权限&#xff09; 右上角切换具体的项目&#xff1b;页面上方包含主页、用例、测试执行、测试结果&#xff1b;左侧包含测试项目管理、关键字管理、编辑测试用例、搜索测试用例、每用户创建的测试用例&#xff1b;…

Element UI的基本使用

学习来源&#xff0c;传送门 目录创建vue项目Element UI主要的标签Vue router 来动态创建左侧导航栏为何会发生嵌套menu与router的绑定设置默认展开设置默认打开页面创建vue项目 以管理员身份&#xff0c;在选定目录下&#xff0c;使用vue ui 按照正常配置配好&#xff0c;可…

Linux(ubuntu)系统搭建docker下的LNMP环境

系统环境 系统&#xff1a;Ubuntu 18.04.4 LTS x86_64 管理面板&#xff1a;宝塔面板7.9.8 下载镜像 通过面板下载docker和docker-compose 下载完毕后通过docker->镜像->从仓库拉取拉取镜像ubuntu:20.04 或者通过docker pull ubuntu:20.04拉取镜像 通过docker->容…

代码随想录算法训练营第四十一天 | 01背包问题-二维数组滚动数组,416. 分割等和子集

一、参考资料01背包问题 二维 https://programmercarl.com/%E8%83%8C%E5%8C%85%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%8001%E8%83%8C%E5%8C%85-1.html 视频讲解&#xff1a;https://www.bilibili.com/video/BV1cg411g7Y6 01背包问题 一维 https://programmercarl.com/%E8%83%8C%E5…

大功率分流电阻器产品阵容进一步扩大,助力大功率应用小型化

全球知名半导体制造商ROHM&#xff08;总部位于日本京都市&#xff09;面向车载、工业设备及白色家电等大功率应用&#xff0c;开发出大功率低阻值分流电阻器“GMR 系列”中额定功率最大的、10W 电阻器“GMR320”。近年来&#xff0c;在车载领域和工业设备领域中&#xff0c;应…