Skip to content

fix(scrollbar): destroy instances during effect cleanup - #3570

Open
dvd233 wants to merge 1 commit into
XiaoMi:masterfrom
dvd233:codex/fix-scrollbar-instance-cleanup
Open

dvd233 wants to merge 1 commit into
XiaoMi:masterfrom
dvd233:codex/fix-scrollbar-instance-cleanup

Conversation

@dvd233

@dvd233 dvd233 commented Oct 9, 2026

Copy link
Copy Markdown

Closes #3567.

Scrollbar 卸载或因 zIndex 变化重新初始化时,旧 PerfectScrollbar 实例没有销毁,导致 document 上的 keydown 监听保留;重新初始化还会留下重复的滚动条轨道。现在初始化 effect 会在 cleanup 中销毁自己创建的实例。

  • 补充真实 PerfectScrollbar 实例的回归测试,覆盖反复挂载/卸载、zIndex 重新初始化和普通 axes 更新。
  • 添加 @hi-ui/scrollbar patch changeset。

验证:

  • Node 14.21.3、原 Jest 配置:修复前 2 项失败、1 项通过;修复后 3 项全部通过。
  • TypeScript 4.3.5 组件类型检查、ESLint、Prettier 和 git diff --check 通过。ESLint 保留原有的 settings effect 依赖警告。
  • Chromium 对当前组件源码的回归:反复卸载后 keydown 监听恢复为 0,zIndex 更新后只保留 2 条轨道,键盘滚动仍有效,未出现页面异常。

本地验证使用隔离依赖和已发布的 HiUI 5.0 配套工具包,并应用仓库原有的 PerfectScrollbar 补丁。验证聚焦 Scrollbar,未运行完整 monorepo 构建或 Storybook。

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Scrollbar组件存在内存泄露问题

1 participant