小程序踩坑之 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 属性后,问题解决了。