【发布时间】:2021-12-19 23:02:42
【问题描述】:
我在尝试更大规模地使用 MUI Styled () 时遇到问题:有人可以看看我们在以前版本中使用的代码,并告诉我如何在 MUI V5 中复制它。
老办法:
const useStyles = makeStyles((theme) => ({
root: {
backgroundColor: "#fdfdff",
},
pageHeader: {
padding: theme.spacing(4),
display: "flex",
marginBottom: theme.spacing,
},
pageIcon: {
display: "inline-block",
padding: theme.spacing(2),
color: "#3c44b1",
},
pageTitle: {
paddingLeft: theme.spacing(4),
"& .MuiTypography-subtitle2": {
opacity: "0.6",
},
},
}));
export default function PageHeader(props) {
const classes = useStyles();
const { title, subTitle, icon } = props;
return (
<Paper elevation={0} square className={classes.root}>
<div className={classes.pageHeader}>
<Card className={classes.pageIcon}>{icon}</Card>
<div className={classes.pageTitle}>
<Typography variant="h6" component="div">
{title}
</Typography>
<Typography variant="subtitle2" component="div">
{subTitle}
</Typography>
</div>
</div>
</Paper>
);
}
我尝试在 MUI V5 中完成相同的操作无法正常工作。它会渲染,但看起来不一样,而且到处都是。
const rootStyle = styled("div")({
backgroundColor: "#fdfdff",
});
const headerStyle = styled("div")(({ theme }) => ({
padding: theme.spacing(4),
display: "flex",
marginBottom: theme.spacing,
}));
const iconStyle = styled("div")(({ theme }) => ({
display: "inline-block",
padding: theme.spacing(2),
color: "#3c44b1",
}));
const titleStyle = styled("div")(({ theme }) => ({
paddingLeft: theme.spacing(4),
"& .MuiTypography-subtitle2": {
opacity: "0.6",
},
}));
export default function PageHeader(props) {
const { title, subTitle, icon } = props;
return (
<rootStyle>
<Paper elevation={0} square>
<headerStyle>
<iconStyle>
<Card>{icon}</Card>
</iconStyle>
<titleStyle>
<Typography variant="h6" component="div">
{title}
</Typography>
<Typography variant="subtitle2" component="div">
{subTitle}
</Typography>
</titleStyle>
</headerStyle>
</Paper>
</rootStyle>
);
}
我是 MUI 的新手,没有很多例子可以涵盖这一点。非常感谢您的帮助!
【问题讨论】:
-
This 应该可以解决您的问题。
-
这里是新的间距方式的文档:mui.com/system/spacing
-
我认为App.js中的部分是正确的,现在的问题是我们如何用新的方式替换makeStyles。我不只是追求间距;我在寻找如何在 v5 中使用主题
-
@Moe 你可以在 v5 中使用
sxprop/styled。文档中有大量示例向您展示如何使用它们。 -
我更新了问题;你能提供一个例子来说明如何使用样式复制我所拥有的
标签: javascript reactjs typescript material-ui