tdesign-react icon indicating copy to clipboard operation
tdesign-react copied to clipboard

fix(Popup): `triggerElement` string not working as CSS selector

Open RylanBot opened this issue 2 months ago • 3 comments

🤔 这个 PR 的性质是?

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

🔗 相关 Issue

  • https://github.com/Tencent/tdesign-react/issues/3932
  • https://github.com/Tencent/tdesign-react/pull/3770
  • https://github.com/Tencent/tdesign-react/issues/4000

💡 需求背景和解决方案

  • 统一使用原生监听器,不依赖 refprops 的穿透
  • 影响了 https://github.com/Tencent/tdesign-react/issues/2320 相关修复,采用 useInnerPopupVisible 解决

[!NOTE]
该 PR 解决了 children 为普通二次封装组件,无法正常穿透的问题。但是如果它使用了 useImperativeHandle 覆盖 ref,从而误判导致拿不到 DOM 节点,仍需要用户自己手动使用 <></> 包裹,例如 https://github.com/Tencent/tdesign-react/issues/3990

Ant Design 底层也有类似的问题:https://ant.design/components/popover-cn#faq

📝 更新日志

  • fix(Popup): 修复 triggerElement 类型为字符串时未正确作为元素选择器解析的问题

  • fix(Popup): 修复 children 为不支持 ref 穿透的封装组件时,弹窗无法正常出现的问题

  • fix(PopupPlugin): 修复 classPrefix 不生效的问题

  • [ ] 本条 PR 不需要纳入 Changelog

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

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

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

RylanBot avatar Nov 03 '25 09:11 RylanBot

完成

github-actions[bot] avatar Nov 03 '25 10:11 github-actions[bot]

commit: c3e047f

pkg-pr-new[bot] avatar Nov 03 '25 10:11 pkg-pr-new[bot]

/update-common

uyarn avatar Dec 10 '25 12:12 uyarn