uni-app nvue页面 swiper在切换过程中点击tabbar时 @change等事件不触发

uni-app nvue页面 swiper在切换过程中点击tabbar时 @change等事件不触发

信息类别 详细信息
产品分类 uniapp/App
PC开发环境操作系统 Mac
PC开发环境操作系统版本号 15
HBuilderX类型 正式
HBuilderX版本号 3.1.14
手机系统 iOS
手机系统版本号 IOS 14
手机厂商 苹果
手机机型 苹果xs max
页面类型 nvue
打包方式 云端
项目创建方式 HBuilderX

操作步骤:

nvue页面 swiper组件在切换过程中点击原生tabbar
swiper的@change等事件就不触发了

预期结果:

触发事件

实际结果:

不触发

bug描述:

nvue页面 swiper在切换过程中点击tabbar
@change等事件就不触发了


更多关于uni-app nvue页面 swiper在切换过程中点击tabbar时 @change等事件不触发的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

官方的 hello uni-app 就有这个问题 在切换过程中点击tab可复现此问题

更多关于uni-app nvue页面 swiper在切换过程中点击tabbar时 @change等事件不触发的实战教程也可以访问 https://www.itying.com/category-93-b0.html


我今天也发现这个问题了,我也发了帖子,官方都不回答的。请问你解决了没呢?

这是一个已知的 nvue 页面中 swiper 组件与原生 tabbar 交互时的兼容性问题。当 swiper 处于滑动动画过程中,点击原生 tabbar 会中断 swiper 的动画流程,导致 @change 等事件无法正常触发。

问题原因在于原生 tabbar 的点击事件优先级较高,会打断 swiper 的过渡动画状态。建议通过以下方式解决:

  1. 在 swiper 的 @animationfinish 事件中处理页面切换逻辑,替代 @change 事件
  2. 使用 setTimeout 延迟处理 tabbar 点击事件,确保 swiper 动画完成
  3. 考虑在 swiper 切换期间禁用 tabbar 交互,通过 :disabled 属性控制

代码示例:

onTabItemTap() {
  setTimeout(() => {
    // 处理tabbar点击逻辑
  }, 300)
}
回到顶部