就是淦
就是淦
  • 发布:2026-08-04 08:56
  • 更新:2026-08-04 11:28
  • 阅读:81

【报Bug】PickerView组件change事件中detail的value数值异常

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: windows10

HBuilderX类型: 正式

HBuilderX版本号: 5.22

手机系统: Android

手机系统版本号: Android 16

手机厂商: 华为

手机机型: 华为

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

具体可能直接使用picker-view组件直接就能反映出问题

预期结果:

正常渲染picker-view

实际结果:

控制台报错,渲染异常

bug描述:

使用图鸟vue3组件库picker组件,其中引用uniapp的picker-view组件,组件无任何行为时触发change事件,其中事件detail返回的value[0]的值为Infinity,导致组件报错,页面渲染异常。
此问题在更新最新hbuilder和vue3-cli开发包前未发生。

2026-08-04 08:56 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

好的,收到你的 bug 反馈。作为 DCloud 官方人员,我以 uni-app 开发工程师的视角对这个反馈进行了评审和分析。

1. 反馈质量评审

这个 bug 反馈整体描述清晰,但在复现条件上存在关键缺失,导致官方人员无法直接定位问题。

  • BUG 标题与描述:标题准确地概括了核心问题(PickerView 组件 change 事件中 detail.value 数值异常为 Infinity)。描述中提到了“图鸟 vue3 组件库”和“更新最新 hbuilder 和 vue3-cli 开发包前未发生”,这为排查提供了版本升级导致兼容性问题的线索,我们能够看懂。
  • 代码示例:缺失。虽然你提到“具体可能直接使用 picker-view 组件直接就能反映出问题”,但在复杂的第三方组件库环境下,直接使用原生组件并不一定能复现该特定场景。强烈建议补充一个最简可复现的完整代码示例(包含涉及的 picker-view 及相关数据绑定逻辑),以便我们快速验证。
  • 复现步骤:描述过于简略。仅说明“组件无任何行为时触发 change 事件”,但没有说明组件的初始 value 是如何赋值的、数据源 range 是怎样的结构。由于 Infinity 通常是除零或数值溢出导致的,这与数据源或索引计算有强关联。需要补充详细的复现步骤和前置数据条件,否则官方人员很难成功复现。
  • 预期结果:“正常渲染 picker-view”是合理的预期。
  • 实际结果:“控制台报错,渲染异常”符合异常表现,不是误报。
  • 分类信息:比较完整,包含了操作系统(Windows 10)、HBuilderX 版本(5.22 正式版)、手机 OS 平台及版本(Android 16)、Vue 版本(Vue3)和机型(华为)。不过,反馈中未明确页面类型(是 .vue 还是 .nvue)以及打包方式,建议补充。

评审结论:反馈有效,但信息不够完整。若能提供最简可复现工程及详细的数据初始化步骤,将极大提升问题处理的效率。

2. 问题分析与排查

根据现有的知识库和官方文档,我进行了如下排查:

  • 版本兼容性:在 uni-app 的历史更新日志中,曾修复过多个 Vue3 项目下 picker-view 组件的报错问题(例如 3.3.5 版本修复记录)。你提到是在更新最新 HBuilderX (5.22) 后出现的,说明可能是新版本编译器或运行时在处理特定数据结构时引发了新的兼容性问题。
  • 组件事件机制:在 ask 社区中,也有其他开发者反馈过 picker-view 属性或事件异常的情况,例如 【报Bug】picker-view 属性:immediate-change,@pickstart,@pickend 无效。这说明 picker-view 在 Vue3 和 App 平台上的事件机制确实存在一些待优化的边界情况。
  • 数值异常分析detail.value[0] 的值为 Infinity,这在正常的数组索引中是不应该出现的。这通常发生在内部计算滚动位置或索引比例时,分母可能为 0(例如未正确获取到 picker-view-column 的高度或数据列表为空)。

3. 解决建议与下一步

由于目前提供的信息无法直接定位根因,建议你按以下步骤进行排查和补充信息:

  1. 检查数据源初始化:请确认在组件挂载和首次触发 change 事件时,传递给 picker-view-column 的数据列表是否已经正确赋值且不为空,初始 value 的值是否在正常索引范围内。
  2. 剥离第三方组件库:虽然你提到直接用原生 picker-view 可能就能复现,但为了排除图鸟 UI 组件库的干扰,请尝试在一个新建的空白 Vue3 项目中,仅使用原生 picker-view 组件,看看是否能复现 Infinity 的问题。
  3. 补充复现工程:如果上述步骤确认是 uni-app 原生组件的问题,请提供一个最简可复现的完整项目代码(可以通过附件或代码片段提供),并附带操作步骤。我们将根据复现工程进行深入的底层排查。

如果你在准备复现工程的过程中遇到问题,可以随时回复补充。

内容为 AI 生成,仅供参考
就是淦

就是淦 (作者)

回滚到5.07.2026041006版本后解决报错

要回复问题请先登录注册