2026-05-24-17-29-17 增加构件加载进度并修正滚轮事件
This commit is contained in:
18
工程分析/经验记录.md
18
工程分析/经验记录.md
@@ -1729,3 +1729,21 @@ C. 解决问题方案
|
||||
D. 后续如何避免问题
|
||||
|
||||
凡是导出“当前可见”这类 UI 状态,不能只依赖历史保存结果;后端应以项目当前状态为准,前端最好显式携带本次导出的关键状态,防止异步保存延迟。二维 overlay 如果用于判断实体形状,必须确认 STL 预览不是抽样缺面;对超过预览上限的大模型,应按可见构件高精度加载或在界面提示。细血管、胆管等管状结构应解释为“天然多小截面/窄带”,不要把所有结构都承诺成单一大实体块。
|
||||
|
||||
## 2026-05-24-17-29-17 构件层级切换要有加载反馈并避免 passive 事件告警
|
||||
|
||||
A. 具体问题
|
||||
|
||||
用户反馈调整逆向工作区“构件层级”时可能出现暂时不显示或看起来像 bug,同时浏览器控制台反复打印 `Unable to preventDefault inside passive event listener invocation`。
|
||||
|
||||
B. 产生问题原因
|
||||
|
||||
逆向分割映射视图为了修正抽样缺面,已经改成按当前可见构件高精度加载 STL preview。构件眼睛切换后,新 preview 在网络和前端缓存返回前,旧 overlay 被清空或尚未绘制,界面没有明确进度反馈。另一个问题是项目库 DICOM 画布和逆向映射画布仍使用 React `onWheel` 调用 `preventDefault`,部分浏览器会把 wheel/touch 合成事件按 passive 处理;按钮 `onTouchStart` 中的 `preventDefault` 也会增加同类告警风险。
|
||||
|
||||
C. 解决问题方案
|
||||
|
||||
为逆向分割映射视图新增 `overlayLoadState`,在可见 STL 构件列表变化时清空旧 preview、显示 `loaded/total` 进度条,并在每个构件 preview 成功或失败后更新进度,全部完成后再绘制最新 overlay。项目库 DICOM 画布和逆向映射画布改为原生 `addEventListener('wheel', ..., { passive: false })`,保留滚轮缩放和阻止页面滚动能力。长按步进按钮改用 pointer 事件和 `touch-none`,移除 touch 合成事件里的 `preventDefault`。
|
||||
|
||||
D. 后续如何避免问题
|
||||
|
||||
后续只要某个 UI 操作会触发异步加载大 STL、DICOM 或导出预计算,都应提供明确加载状态、进度和空状态,避免用户把正常等待理解为显示故障。需要阻止滚轮默认滚动时,应使用原生非被动 wheel 监听并在卸载时清理;触摸按钮优先使用 pointer 事件和 `touch-action` 控制,不要在 passive-prone 的 touch 合成事件中调用 `preventDefault`。
|
||||
|
||||
Reference in New Issue
Block a user