Vant (List组件)和下拉菜单(DropdownMenu)实现数据切换导致界面数据异常的解决办法以及问题所在。

一、实现功能(移动端)

    界面需要实现一个下拉列表(vant List列表)并在头部加入可以切换类型的下拉菜单(vant DropdownMenu)

二、List的问题点

  List 组件通过 loading 和 finished 两个变量控制加载状态,当组件滚动到底部时,会触发 load 事件并将 loading 设置成 true

   需要注意点:1.只要触底 组件会自动响应load事件 并 自动将loading设置为true类型 只要loading   为true就会不断的触发load事件

                         2.只要数据没有填充占满容器高度,也会导致load事件不断被触发,陷入循环不会  停止,这就会因为如果是赋值错误或者空数据造成陷入死循环。

                          (滚动条与底部距离小于 offset 时触发Load事件 offset默认值300)

三、下拉组件切换数据源,导致界面响应数据异常

        1.问题出现的原因

           (1)数据列表没有进行重置、清空,因为你是获取特重新获取特定条件的数据源且

                   你的List数据列表是通过分页数据进行拼接的 不做清空会导致数据残留!!

           (2)没有设置loading为true 因为List列表数据如果没有填满会一直调用load事件

                     为什么会没有占满,因为第一点做了数据清空,所以会引发load事件

                   (第二大点的注意小点有提到为什么空数据会造成load事件被调用),

所以需要通过将loading的状 态置为true,数据调用loading状态转变之前都不触发load!!

                  (是否处于加载状态,加载过程中不触发load事件 注:引用官网文档原话)

           (3)没有重置页码 页码是为了接收分页数据做下拉数据的传入参数 因为你是重新请求全    新数据 页码数未重置会导致你的数据请求分页错误 所以需要重置为第一页

           (4)没有重置finished状态 同样是因为请求全新数据 需要重置之前所有被改变的状态

        1.切换组件的点击事件 (部门代码) 切换数据类型的回调

         change(){

               this.loading= true  // 这是一个特殊点 处于加载状态 不调用load事件 防止多次调用

               this.finished = false

               this.list = []

               this.pageNum = 1

               this.onLoad()  //  调用一次load事件请求数据做数据请求

          }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值