首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将资料ui v4迁移到v5时出现自定义样式问题

将资料ui v4迁移到v5时出现自定义样式问题
EN

Stack Overflow用户
提问于 2022-09-09 03:08:37
回答 1查看 15关注 0票数 0

在我们当前的react应用程序中,我们使用的是material v4,我们有以下定制风格:

代码语言:javascript
复制
const useStyles = makeStyles((theme) =>
  createStyles({
    dob: {
      color: theme.palette.grey[300],
    },
    location: {
      color: theme.palette.grey[300],
    },
  })
)

在我们的组成部分中,我们

代码语言:javascript
复制
<Box>
...
<Typography className={classes.dob} variant="caption">
                      {formatDateTime(
                        person.dateOfBirth,
                        "M/D/YYYY HH:mm:ss A"
                      )}
</Typography>
<Typography className={classes.location} variant="caption">
                    {props.person.location}
</Typography>
...
</Box>

现在我们正在升级到v5。在迁移指南中,它建议使用sx,但是我在主题上出现了一个错误。

代码语言:javascript
复制
<Typography sx={{theme.palette.grey[300]}} variant="caption">
                        {props.person.location}
</Typography>

有谁知道我该怎么解决这个问题吗?此外,我想知道是否可以使用styled()来在诸如Box、Appbar等重要ui组件上创建自定义样式。指南中提供的示例仅用于泛型html元素,例如div、span。例如:

代码语言:javascript
复制
const MyTypograhy = styled('Typography')(({ theme }) => ({
  color: theme.palette.primary.main,
}))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-09 03:21:31

sx可以充当内联style,因此必须提供数据类型,如果要使用theme,则必须将主题作为函数传递为第一个参数。

代码语言:javascript
复制
<Typography sx={{ color: theme => theme.palette.grey[300] }} variant="caption">
  {props.person.location}
</Typography>

是的,您可以基于现有的MUI组件创建自定义组件。

代码语言:javascript
复制
const CustomBox = styled(Box)((theme) => ({
  padding: "2rem",
  background: "black"
}));

码箱演示

参考文献

道具

风格库互操作

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73656952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档