npm MUI -makeStyles的样式在更新MUI和React版本后损坏

m4pnthwp  于 2023-10-19  发布在  React
关注(0)|答案(2)|浏览(140)

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>;
qvtsj1bj

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

qlvxas9a

qlvxas9a2#

问题是我有另一个使用不同版本的MUI的组件。我的项目中的每个组件都有自己的npm包。因此,我在版本之间产生了冲突。它是固定的,一旦我更新了所有组件使用较新的MUI版本。

相关问题