小程序

微信小程序swiper闪烁抖动卡死问题

2023-08-16  本文已影响0人  wodeph

微信官方文档有注释

change事件 source 返回值

从 1.4.0 开始,change事件增加 source字段,表示导致变更的原因,可能值如下:

autoplay 自动播放导致swiper变化;

touch 用户划动引起swiper变化;

其它原因将用空字符串表示。

Bug & Tip

tip: 如果在 bindchange 的事件回调函数中使用 setData 改变 current 值,则有可能导致 setData 被不停地调用,因而通常情况下请在改变 current 值前检测 source 字段来判断是否是由于用户触摸引起。

tip: 在 mac 小程序上,若当前组件所在的页面或全局开启了 enablePassiveEvent 配置项,该内置组件可能会出现非预期表现(详情参考 enablePassiveEvent 文档

<swiper bindchange="swiperBindChange" current='{{selectedTitle}}' duration="200" style="height:{{swiperHeight}}rpx">

    <block wx:for="{{dataList}}" wx:key="index">

      <swiper-item id="current_{{index}}">

      </swiper-item>

    </block>

  </swiper>

swiperBindChange: function (any) {

      console.log(any);

      let that = this;

      let source = any.detail.source;

//根据官方 source 来进行判断swiper的change事件是通过什么来触发的,autoplay是自动轮播。touch是用户手动滑动。其他的就是未知问题。抖动问题主要由于未知问题引起的,所以做了限制,只有在自动轮播和用户主动触发才去改变current值,达到规避了抖动bug

      if (source == "autoplay" || source == "touch") {

      }

  }

上一篇 下一篇

猜你喜欢

热点阅读