Swiper懒加载模式下修改slide内data-src后src未更新怎么解决
Swiper修改懒加载图片data-src后src不同步的解决方法
Swiper 内置的懒加载逻辑仅会在初始化、滑动到对应 slide 两个时间点读取一次data-src属性并赋值给src,默认不会监听data-src的后续变更,因此手动修改data-src后不会自动同步到src。可以通过以下方案触发更新:
- 调用Swiper内置的懒加载更新API
如果你使用的是Swiper 7及以上版本,修改完data-src后,调用对应Swiper实例的lazy.loadInSlide(slideIndex)方法即可,其中slideIndex为修改了图片的slide的索引值,Swiper会重新读取该slide内所有懒加载图片的data-src属性完成更新。
如果你使用的是Swiper 6及更早版本,修改data-src后先调用swiperInstance.update()刷新Swiper状态,再调用swiperInstance.lazy.loadSlide(slideIndex)触发指定slide的懒加载重新执行即可。 - 重置已加载状态避免跳过更新
如果对应图片已经被Swiper标记为加载完成,需要先移除图片元素上的swiper-lazy-loaded类名,同时清空已赋值的src属性,再调用上述懒加载API,否则Swiper会判定图片已经加载完成跳过处理流程。 - 自定义懒加载适配高频变更场景
如果你的业务场景需要频繁修改slide内的图片地址,可以关闭Swiper自带的懒加载能力,自行实现懒加载逻辑,直接监听data-src变化或者通过框架响应式属性绑定src,适配性更高。
提示:如果你使用的是框架封装的Swiper组件(如vue-awesome-swiper、react-id-swiper),需要先通过组件暴露的实例获取接口拿到原生Swiper实例,再调用上述API才能生效。
内容的提问来源于stack exchange,提问作者Vladimir Gatev
相关产品推荐
相关产品推荐

