收藏
回答

Swiper 组件使用 setData 改变 current ,偶尔会出现自己前后切换,如何解决?

目前发现问题的是 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>
回答关注问题邀请回答
收藏

3 个回答

  • 七叶树
    七叶树
    2021-11-02

    bindchange 换成 bindanimationfinish + 数据做了一个分页 + 没必要在首屏展示的内容先隐藏,完美解决。

    2021-11-02
    有用
    回复
  • 游戏人生
    游戏人生
    2021-11-01

    current 人家官方做的目的是用来获取的。。。你反向操作用来设置当前。。。如果你原本swiper是自动滚的,你这样设置。。。组件也不知道要怎么滚呀

    我表示。。。emmm。。。硬上伤身,小伙子

    2021-11-01
    有用
    回复 2
    • 七叶树
      七叶树
      2021-11-01
      autoplay 为 false
      2021-11-01
      回复
    • 游戏人生
      游戏人生
      2021-11-02回复七叶树
      我的意思是current 不是干这事的。。。这个需求点。。。很尴尬
      2021-11-02
      回复
  • TNT
    TNT
    2021-11-01

    来个代码片段。

    https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html

    2021-11-01
    有用
    回复
登录 后发表内容