swiper在真机调试中,滑动过快导致swiper自身疯狂滑动(抖动),官档上面的提到的点
从 1.4.0 开始,change事件增加 source字段,表示导致变更的原因,可能值如下:
- autoplay 自动播放导致swiper变化;
- touch 用户划动引起swiper变化;
- 其它原因将用空字符串表示。
打印出触发源看到source为空,官方提供解决方法
Tip:
如果在 bindchange 的事件回调函数中使用 setData 改变 current 值,则有可能导致 setData 被不停地调用,因而通常情况下请在改变 current 值前检测 source 字段来判断是否是由于用户触摸引起。
具体代码实现
swiperChange(e) {
// 防止非用户触发
if (!e.detail.source) return
this.triggerEvent('swiperChange', e.detail.current)
},