- 当前 Bug 的表现(可附上截图)
每次读取缓存并展示的时候,明明swiper里面有对应的swiper-item内容,但是这个swiper就是不显示……Orz……
代码段也不行,真机也不行,必须重启小程序这个问题才解决……
- 预期表现
onShow触发修改data.list的值,然后正确在swiper渲染
- 复现路径
进入管理页面,从空条目新增几个条目,然后返回这一页,swiper立刻是空……
- 提供一个最简复现 Demo
https://developers.weixin.qq.com/s/sXleJCmI7i6q
我更新了一下复现用的DEMO:
https://developers.weixin.qq.com/s/49veKDmr796C
因为我腾讯视频没通过实名认证,身份证在家也弄不了,所以在微博上发了视频,我表示真心很懵…………
这个视频是带调试信息的,你可以看到我的确有对应的swiper-item:
直接点你的链接 用起来好像没什么问题
我增加了演示视频的地址,我的就出现了,而且现在基本上是100%复现……Orz
因为我腾讯视频没通过实名认证,身份证在家也弄不了,所以在微博上发了视频,我表示真心很懵…………
视频地址:https://m.weibo.cn/s/video/index?object_id=1034%3A4346434112438232&segment_id=&blog_mid=4346434138231256
这个视频是带调试信息的,你可以看到我的确有对应的swiper-item:
https://m.weibo.cn/s/video/index?object_id=1034%3A4346435735641288&segment_id=&blog_mid=4346435766208337
在设置了 渲染列表后,进行滑动操作,swiper会记录当前所在块的id,当你回退的时候,swiper没有刷新
因为在第二页改变了swiper块的长度,swiper重新渲染后,如何找不到这个current-item-id 就会出现你说的问题
解决办法:
在回退的时候重新渲染swiper
可以使用 wx:if
例子:
添加如下内容
这应该不是bug
感谢指导!我似乎明白了,通过wx:if来“瞬间重新摆上来”一个新的swiper,然后就能正常显示了,可以这么理解吧?^_^b
不过wx:if这里直接用wx:if="{{isShow}}"就可以了吧?
看了一下你的代码片段
可以在sets.js加上
onShow: function () {
this.setData({
list: wx.getStorageSync('list') || ['你好,世界!']
});
},
函数试一试
我当时只是为了复现这个情况所以没加这个环节,但是我确定不是它的锅。
我现在在onShow增加了这个步骤,代码段更新:
https://developers.weixin.qq.com/s/49veKDmr796C
测试结果还是一样的