在components library
中使用MUI Dropdown
。
在Storybook
中运行库,它工作得很好。
在不同的React
项目中使用组件,则设计将被损坏。
下拉标签有top: 60px
,它不应该,菜单项悬停有错误的background color
,菜单有额外的padding-bottom
和更多。
检查(例如:标签)它有这个makeStyles class
:
.makeStyles-root-12 {
top: 60px;
}
在组件库中更新MUI版本后发生此错误行为:
"@emotion/react": "^11.8.1",
"@emotion/styled": "^11.8.1",
"@mui/material": "^5.4.4",
"@mui/styles": "^5.6.1",
"@mui/x-data-grid-pro": "^5.6.0",
并将项目(消耗库)React version
更新为17:
"react": "^17",
"react-dom": "^17",
让事情变得奇怪,有一系列的事件使风格再次正确:
转到不同的标签->返回到第一个标签(其中Dropdowns
在)->样式是应该的
让事情变得更奇怪:在不同计算机上的同一项目不会遇到此问题。
组件库下拉标签
const useLabelStyles = makeStyles<
{},
{ disabled: LazyBoolean; hasTooltip: LazyBoolean; readOnly?: boolean }
>({
root: {
fontSize: '14px !important',
lineHeight: '20px !important',
color: ({ disabled, readOnly }) =>
disabled || readOnly
? 'var(--neutral-element-50) !important'
: 'var(--neutral-element) !important',
marginRight: ({ hasTooltip }) => (hasTooltip ? '10px !important' : ''),
fontFamily: 'Open Sans !important',
},
});
const labelClasses = useLabelStyles({
disabled,
readOnly,
hasTooltip: Boolean(tooltipText),
});
<InputLabel
data-testid={generateDropdownTestIdWithSuffix(TEST_ID_SUFFIX.LABEL)}
classes={labelClasses}
>
{label}
</InputLabel>;
2条答案
按热度按时间qvtsj1bj1#
这种行为可能与以下因素有关:
@mui/styles是MUI的传统样式解决方案。它依赖于JSS作为样式化解决方案,这在@mui/material中不再使用,在v5中被弃用。如果你不想在你的bundle中同时包含emotion和JSS,请参考@mui/system文档,这是推荐的替代方案。
@mui/styles与React. modem或React 18不兼容。
您可以查看更多关于here。
此外,Mui文档有一个关于从v4迁移到v5的指南,以及一个与样式相关的特定部分。
所以,基本上你应该从
@mui/styles
到@mui/material
qlvxas9a2#
问题是我有另一个使用不同版本的MUI的组件。我的项目中的每个组件都有自己的npm包。因此,我在版本之间产生了冲突。它是固定的,一旦我更新了所有组件使用较新的MUI版本。