收藏
回答

动态改变渲染swiper-item的数组时出现current为-1的情况

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug swiper 客户端 6.7.3 2.4.2

- 当前 Bug 的表现(可附上截图)  因为数据量太大,选择在swiper滑动时动态改变list中的数据,开始取索引从0 - 10的数据,当滑动到最后一条的时候把数据改为所以从 0 - 20 的数据,因为是通过current-item-id控制当前swiper的展示,所以在右滑切换的时候表现正常,只是在数据替换时有些卡顿,但是当开始往回滑动的时候就会出现 current 为-1的情况导致白屏,但是并没有使用current控制swiper。而且可以保证current的值一直在swiper-item总量之内。


- 预期表现  不会出现current为-1的情况


- 复现路径


- 提供一个最简复现 Demo


回答关注问题邀请回答
收藏

5 个回答

  • Eric Huang
    Eric Huang
    2018-11-13

    util.js 下的 getPosterList 函数,我看你用 slice 计算了 nextList, 在这里应该保证:前面加载过的item不能被挪掉否则swiper内部可能会错乱。所以,应该返回 list.slice(0, endIndex)。

    2018-11-13
    有用
    回复 5
    • Y
      Y
      2018-11-13

      可是这样的话一直往右滑还是会导致list数组越来越长  我这总共1000多张图片  就会越来越卡啊。

      2018-11-13
      回复
    • Y
      Y
      2018-11-13

      而且我这一直往后滑就不会有问题

      2018-11-13
      回复
    • Eric Huang
      Eric Huang
      2018-11-13回复Y

      那你可能要自己控制swiper的current属性来搞了

      2018-11-13
      回复
    • 波子
      波子
      2020-12-25
      请问这个bug修复了吗?两年了,还是有遇到和题主同样的问题和需求
      2020-12-25
      回复
    • 波子
      波子
      2020-12-25
      “前面加载过的item不能被挪掉否则swiper内部可能会错乱”请问这个swiper的逻辑是否有待优化?
      2020-12-25
      回复
  • 晨
    2018-11-12

    麻烦给个相关的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html),我们定位下问题

    2018-11-12
    有用
    回复 25
    • Y
      Y
      2018-11-12

      为什么我没用current去控制swiper,current还是能反过来影响到swiper的展示,那这样的话current-item-id的作用呢

      2018-11-12
      回复
    • 卢霄霄
      卢霄霄
      2018-11-12回复Y

      你的swiper根本没绑定current属性吗?

      2018-11-12
      回复
    • Y
      Y
      2018-11-12回复卢霄霄

      是的 我用的current-item-id

      2018-11-12
      回复
    • 卢霄霄
      卢霄霄
      2018-11-12回复Y

      emmm......wtf......current-item-id 没有重复的情况吧。。

      2018-11-12
      回复
    • Y
      Y
      2018-11-13回复卢霄霄

      特地确认了 没有..

      2018-11-13
      回复
    查看更多(20)
  • 黑色摩天轮
    黑色摩天轮
    2023-09-19

    去掉 swiper-item 上的 item-id属性试试

    2023-09-19
    有用 1
    回复
  • ♂
    2018-12-11

    除了增加初次渲染swiper-item数量,有没有找到解决方法?我的一次渲染3个item,右滑一直没问题,左滑明明页面存在,左滑的一半的时候也能看见上一个页面内容,一但滑完,current自动变为-1,页面就变空白了

    2018-12-11
    有用 1
    回复 1
    • 。
      2022-12-30
      加个判断嘛,如果是-1 就让它=0 ;我现在的current 是我在swiper ---> change事件中用setData({current : this.data.current +1 })  的时候 ,一下子就滑到最后一个元素去了 。苦了一天没找到资料
      2022-12-30
      回复
  • X Q
    X Q
    03-07

    2024年了还有这个问题

    03-07
    有用
    回复
登录 后发表内容