swiper遇到的问题

在父组件复用了一个swiper组件,总共复用了四次
ABCD分别代表复用组件的功能模块
AB组件在页面初始化时,立即请求数据,状态为display:block,CD这两个组件状态是none,并且只有在分别点击它们的时候才会请求数据
在swiper组件中使用watch监视父组件传过来的数据,
如果数据发生改变,使用$nextTick函数,初始化swiper(传入类名),本以外只会初始化前两个AB复用组件的Swiper
但是通过断点发现,直接传入类名初始化时,总共初始化了四个Swiper(输出this可以看到 四个数组,每个数组的内容是初始化时传入的类名),也就是说除了初始化了AB组件,还把状态为none的CD组件也初始化了。

后来在滑动的时候 出现了各种问题,比如: 无限滑动 、初始化时显示最后一个silde、 滑到最后一个slide的时候,又自动弹回第一个slide了。
后来通过swiper官方api: Observer监视器解决了问题,这个api的功能是当 silde 发生变化时,重新初始化swiper。

最终解决方法: 不要直接传入类名,而是把ref引用的DOM元素传进去。这样在初始化时,只会初始化AB组件,并且输出this,也只有当前一个Swiper,把当初swiper api: Observer配置删除掉,滑动也是没任何问题的。

还有就是在获取DOM修改状态的时候,也是必须要把ref引用传进去,不然获取的时候,还是会包括隐藏元素的,到时候如果需要遍历DOM,同样会把这些隐藏元素也遍历一遍。

上一篇:《Fluent Python》- 01 Python数据模型


下一篇:html5手机端手指滑动选项卡滚动切换效果(转)