Summary
在长会话中向上滚动查看历史消息时,滚动过程中会出现间歇性刷新闪烁和短暂空白区域,内容需要短暂等待后重新显示。与 #1381 的"强制跳回底部"不同,这个问题表现为滚动路径上的渲染不稳定。
Area
Web UI / Flow Chat / VirtualMessageList
Environment
- BitFun 版本:0.2.12
- 操作系统:Windows 11 x64
Reproduction
- 在 20+ 轮的长会话中
- 使用鼠标滚轮持续向上滚动浏览历史
- 观察滚动过程
实际表现
- 滚动开始后立即出现一次刷新抖动
- 刷新后可以正常持续滚动一段距离
- 滚动到某些位置时再次出现刷新或短暂空白区域
- 空白区域短暂显示后内容重新渲染恢复
- 以上过程在同一次滚动中可能反复出现
期望表现
滚动全程流畅无刷新、无空白闪烁,虚拟列表增量渲染不应产生用户可见的空白。
|
#1381(已修复) |
本 Issue |
| 现象 |
滚动后自动跳回最底部 |
滚动过程中刷新闪烁/短暂空白 |
| 根因 |
scroll position 被重置 |
虚拟列表增量渲染可见延迟 |
| 触发 |
后台事件到达后强制回底 |
滚动到未渲染区域时 DOM 创建延迟 |
Likely Cause
VirtualMessageList 的虚拟化机制在你滚动到之前未渲染的 turn 位置时,需要创建新的 DOM 节点。如果 React reconcile 和 DOM commit 之间的间隔稍长,用户会在极短时间内看到空白区域。可能的原因:
- item 渲染没有做预渲染/预加载(没有 overscan 或 overscan 不够大)
- item 高度计算触发了新一轮 layout,导致闪烁
order_index 重新排序或其他状态更新触发了不必要的 re-render
Suggested Fix
- 增大虚拟列表的 overscan 值(预渲染屏幕外 N 个 item)
- 为进入 viewport 的 item 加最短渲染保活时间,避免快速滚动时频繁创建/销毁
- 检查 item 渲染路径中是否有不必要的状态更新触发了连锁 re-render
Summary
在长会话中向上滚动查看历史消息时,滚动过程中会出现间歇性刷新闪烁和短暂空白区域,内容需要短暂等待后重新显示。与 #1381 的"强制跳回底部"不同,这个问题表现为滚动路径上的渲染不稳定。
Area
Web UI / Flow Chat / VirtualMessageList
Environment
Reproduction
实际表现
期望表现
滚动全程流畅无刷新、无空白闪烁,虚拟列表增量渲染不应产生用户可见的空白。
与 #1381 的区别
Likely Cause
VirtualMessageList的虚拟化机制在你滚动到之前未渲染的 turn 位置时,需要创建新的 DOM 节点。如果 React reconcile 和 DOM commit 之间的间隔稍长,用户会在极短时间内看到空白区域。可能的原因:order_index重新排序或其他状态更新触发了不必要的 re-renderSuggested Fix