如果让每项 MenuItem 宽度往外撑,那么恐怕会很长,而我们希望尽可能短,少占用空间。
若改成每项 MenuItem 宽度往内缩,width=‘fit-content’,那么右边的 ”快捷键文本“ 就不会右对齐,字少的会更短。
这种需求描述就是,默认宽度内缩,但是短的需要补齐最长的那个。
现在的代码是:
return (
<div className={menuItemMergeStyle + " " + className} style={{ ...style }}>
{menuContext.hasCheckmark && checkMarkNode}
{menuContext.hasIcon && iconNode}
{contentNode}
{shortcutNode}
{menuContext.hasSubmenu && submenuIndicatorNode}
</div>
);
对齐问题,我现在有个不优雅的解决方法,
让 content 以及左边的,装在 leftContainer,样式 left = 0,
让 shortcut 以及右边的,装在 rightContainer,样式 right = 0。
但宽度问题 内缩 和 外撑 都无法解决。
不知道这样合适吗?
MenuItem 用 ref 放在 div,然后 获取 div 实际宽度,上传 MenuListContext 以便共享,上传前先对比,如果小于就不上传了,反而下载使用其他 MenuItem 的 div 较长的那个值。