uni-app 单页面多 Swiper 动态切换导致内容显示异常
uni-app 单页面多 Swiper 动态切换导致内容显示异常
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Mac | 10.14.6 | HBuilderX |
操作步骤:
- 2 个 swiper 用 v-if 控制切换
- 滑动其中任意一个后, 切换到另一个
- 补充: 2 个 swiper 处在大致相同的位置才能触发
预期结果:
- 2 个 swiper 都显示正常
实际结果:
- 2 个 swiper 都显示异常
bug描述:
- 2 个 swiper 通过 boolean 变量和 v-if 控制显示
- 当 2 个 swiper 都不滑动时切换显示, 无问题
- 当滑动其中任意一个后切换到另一个, 另一个就显示异常了
- 补充: 2 个 swiper 处在大致相同的位置才能触发
更多关于uni-app 单页面多 Swiper 动态切换导致内容显示异常的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app 单页面多 Swiper 动态切换导致内容显示异常的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这个问题是由于 Swiper 组件在动态切换时内部状态未正确重置导致的。当两个 Swiper 组件通过 v-if 切换且位置重叠时,滑动操作会干扰彼此的渲染状态。
解决方案:
- 使用 key 强制重新渲染
<swiper v-if="showSwiper1" :key="'swiper1'">
<!-- swiper1 content -->
</swiper>
<swiper v-if="showSwiper2" :key="'swiper2'">
<!-- swiper2 content -->
</swiper>
- 使用 v-show 替代 v-if
<swiper v-show="showSwiper1">
<!-- swiper1 content -->
</swiper>
<swiper v-show="showSwiper2">
<!-- swiper2 content -->
</swiper>