Skip to content

fix(popup): stabilize hover close when moving to popup#4293

Open
DaZuiZui wants to merge 2 commits into
Tencent:developfrom
DaZuiZui:fix/dropdown-hover-popup-flicker
Open

fix(popup): stabilize hover close when moving to popup#4293
DaZuiZui wants to merge 2 commits into
Tencent:developfrom
DaZuiZui:fix/dropdown-hover-popup-flicker

Conversation

@DaZuiZui

Copy link
Copy Markdown

🤔 这个 PR 的性质是?

  • 日常 bug 修复
  • 新特性提交
  • 文档改进
  • 演示代码改进
  • 组件样式/交互改进
  • CI/CD 改进
  • 重构
  • 代码风格优化
  • 测试用例
  • 分支合并
  • 其他

🔗 相关 Issue

Fixes #4290

💡 需求背景和解决方案

Dropdown 文档页「多层下拉菜单」示例中,鼠标 hover 打开菜单后快速从 trigger 移入 popup,可能因为 trigger mouseleave 当下的 relatedTarget 指向页面空白或容器而不是 popup,导致浮层误关闭并出现闪烁。

本 PR 在 Popup hover 关闭逻辑中补充:

  • 保留 relatedTarget 判断,并使用 document.elementFromPoint 做当前位置兜底。
  • 判断当前位置是否属于当前 trigger 或当前 popup,避免只依赖 .t-popup class。
  • 增加短暂 hover grace window,结合 document mousemove 记录最新鼠标坐标,覆盖快速经过空白区域后进入 popup 的场景。
  • 在 trigger/popup mouseenter、卸载时清理 pending close 任务,避免旧关闭任务影响新状态。

📝 更新日志

  • 本条 PR 不需要纳入 Changelog

tdesign-react

  • fix(Popup): 修复 hover 快速移入浮层时闪烁或关闭的问题

@tdesign-react/chat

☑️ 请求合并前的自查清单

⚠️ 请自检并全部勾选全部选项⚠️

  • 文档已补充或无须补充
  • 代码演示已提供或无须提供
  • TypeScript 定义已补充或无须补充
  • Changelog 已提供或无须提供

✅ 验证

  • pnpm vitest run packages/components/popup/__tests__/popup.test.tsx packages/components/dropdown/__tests__/dropdown.test.tsx
  • pnpm run lint:tsc

@tdesign-bot

tdesign-bot commented Jun 23, 2026

Copy link
Copy Markdown
Collaborator

TDesign Component Site Preview Open

Component Preview
tdesign-react 完成
@tdesign-react/chat 完成

@pkg-pr-new

pkg-pr-new Bot commented Jun 23, 2026

Copy link
Copy Markdown
  • tdesign-react-demo

    npm i https://pkg.pr.new/Tencent/tdesign-react@4293
    
    npm i https://pkg.pr.new/Tencent/tdesign-react/@tdesign-react/chat@4293
    

commit: e8da954

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.

[Dropdown] 弹窗闪烁

3 participants