fix(SubMenu): remove `maxHeight`
🤔 这个 PR 的性质是?
- [x] 日常 bug 修复
- [ ] 新特性提交
- [ ] 文档改进
- [ ] 演示代码改进
- [ ] 组件样式/交互改进
- [ ] CI/CD 改进
- [ ] 重构
- [ ] 代码风格优化
- [ ] 测试用例
- [ ] 分支合并
- [ ] 其他
🔗 相关 Issue
- https://github.com/Tencent/tdesign-react/issues/3222
💡 需求背景和解决方案
测试代码存档
import React, { Fragment } from 'react';
import { UserIcon } from 'tdesign-icons-react';
import { Menu } from 'tdesign-react';
const { SubMenu, MenuItem } = Menu;
function Multiple() {
return (
<Fragment>
<Menu theme="dark">
<SubMenu value="sub-2" title="水果蔬菜" icon={<UserIcon />}>
<MenuItem value="12">黄瓜</MenuItem>
<MenuItem value="13">西红柿</MenuItem>
<SubMenu value="0" title="水果">
<MenuItem style={{ height: 90 }} value="0-1">
苹果1
</MenuItem>
<MenuItem value="0-2">苹果2</MenuItem>
<MenuItem value="0-3">苹果3</MenuItem>
</SubMenu>
</SubMenu>
<MenuItem value="9">其他</MenuItem>
</Menu>
</Fragment>
);
}
export default Multiple;
📝 更新日志
-
fix(Menu): 移除
SubMenu的max-height样式限制,避免额外设置MenuItem的height时,内容被遮挡 -
[ ] 本条 PR 不需要纳入 Changelog
☑️ 请求合并前的自查清单
⚠️ 请自检并全部勾选全部选项。⚠️
- [x] 文档已补充或无须补充
- [x] 代码演示已提供或无须提供
- [x] TypeScript 定义已补充或无须补充
- [x] Changelog 已提供或无须提供
没有在expanded 中的节点错误展开了
且导致错误展开的菜单第一次点击会丢失收起效果
https://github.com/user-attachments/assets/8f711e1b-e028-46aa-97ec-f6d73159abf3
snapshot和test需要改才能正常就不太对吧
snapshots 变的都是 height 的移除 🤔
至于「没有在expanded 中的节点错误展开了」这个得验证一下为什么该样式变动会影响到它...
before
以前的style里面计算了
maxHeight:isExpand || (open && isPopUp) ? getSubMenuMaxHeight(children) : 0;
没展开的maxHeight:0,所以没问题
after
现在没有设置height:0,所以默认就展开了
height:0
已重新处理
styleisExpand的处理,导致动画展开或者收缩的缺失了
只能说,除非改掉 https://github.com/Tencent/tdesign-common/blob/develop/style/web/_global.less#L35 动画的实现方式
...否则它永远依赖 height 和 maxHeight
只能说,除非改掉 https://github.com/Tencent/tdesign-common/blob/develop/style/web/_global.less#L35 动画的实现方式 ...否则它永远依赖
height和maxHeight
展开收起的动画效果 通过maxHeight的transition动画是常见的实现方式,或者考虑改成和popup一样通过clip path实现 https://github.com/Tencent/tdesign-common/issues/155
我没理解到什么问题
