小程序踩坑之 swiper 组件
之前小程序测试出来一个bug。在管理车型页面删除一辆车型后,在点击第一辆车型返回到车型档案页时,最上面的车型卡片消失了。
找来找去没找到问题根源,只知道原因出现在 swiper
组件上。
在返回的时候,明明设置了 swiper 组件的 current
属性为 0,可是查看元素发现显示的是 -1
。
到处找代码逻辑,修修改改,最后测试似乎没复现了,可是为什么好的?还是不知道。
本来就这样的话,估计也就放着不动了,可是在今天要上线的时候,居然又出现了这个情况!
好吧,只能继续找问题了。
经过一段艰辛的排查,最后发现,问题可能出现在 swiper-item
组件的一个属性上:item-id
微信文档对它的描述是:
swiper-item
仅可放置在
<swiper>
组件中,宽高自动设置为100%。
属性 类型 默认值 说明 最低版本 item-id String “” 该 swiper-item 的标识符 1.9.0
而我的项目里的 swiper-item
就添加了该属性,值为车型id。
而问题也正出现在这里。
当我在车型管理页面删除了车型之后,返回前一页时,虽然重新调用接口获取了新的车型列表,
新列表与旧列表不是同一个对象,可内部数据id,同一辆车还是一样的,这就导致了swiper-item
的标识其实并没有改变,然后其中被标识的swiper-item
找不到了。
大概就是这样导致的 current="-1"
这样的问题。
之后删除了 item-id
属性后,问题解决了。