tdesign-react
tdesign-react copied to clipboard
fix(popup): fix popup positioning issue with React Flow pan and zoom
fix #3851
🤔 这个 PR 的性质是?
- [x] 日常 bug 修复
- [ ] 新特性提交
- [ ] 文档改进
- [ ] 演示代码改进
- [ ] 组件样式/交互改进
- [ ] CI/CD 改进
- [ ] 重构
- [ ] 代码风格优化
- [ ] 测试用例
- [ ] 分支合并
- [ ] 其他
🔗 相关 Issue
💡 需求背景和解决方案
https://github.com/user-attachments/assets/73e2164c-c59c-4235-8cc7-41bca8bb47a9
解决方案
- 监听用户鼠标事件。鼠标事件开始时每帧检测位置变化;鼠标事件结束后取消监听;
- 针对 React Flow,监听其 viewport style 变化。
📝 更新日志
-
fix(Popup): 修复内层组件位置变化时浮窗无法跟随移动的问题。
-
[x] 本条 PR 不需要纳入 Changelog
☑️ 请求合并前的自查清单
⚠️ 请自检并全部勾选全部选项。⚠️
- [x] 文档已补充或无须补充
- [x] 代码演示已提供或无须提供
- [x] TypeScript 定义已补充或无须补充
- [x] Changelog 已提供或无须提供
「对 React Flow 的特殊适配」👀 这个不应该是组件库底层应该维护的事情噢 否则一大堆第三方库,难道都要适配吗 (?) 建议把监听逻辑放到自己的业务项目代码里 理论上外部也可以拿到
trigger的ref
但是这个问题是由于 popperjs 使用了 absolute 位置产生的,或许属于 popperjs 的某种设计缺陷?
也不能完全说是缺陷吧 🤔 它就是“故意”没有兼容的
可拖拽画布这种场景...一般也很少在画布上使用组件库 or popperjs
应该会有更成熟的业务方案,感觉通常需要大量的手动封装
