目前发现问题的是 iphone 手机,且数据多时更容易复现。(我们的 swiper-item 里只有一张图片)
因业务需要,使用了setData 改变 current ,且参照文档在setData 时判断了source 为 touch 时才去 setData,但还是会偶尔出现自动切换的情况。
代码和测试结果如下:
bindChange(e){
console.log(e.detail.source, e.detail, 'onChange');
if (e.detail.source === 'touch') {
const current = e.detail.current;
this.setData({
index: current,
});
}
};
...
<swiper
current="{{index}}"
bind:change="bindChange"
>
...
</swiper>
bindchange 换成 bindanimationfinish + 数据做了一个分页 + 没必要在首屏展示的内容先隐藏,完美解决。
current 人家官方做的目的是用来获取的。。。你反向操作用来设置当前。。。如果你原本swiper是自动滚的,你这样设置。。。组件也不知道要怎么滚呀
我表示。。。emmm。。。硬上伤身,小伙子
来个代码片段。
https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html