首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React & MUI:无法使用makeStyles样式MUI图标

React & MUI:无法使用makeStyles样式MUI图标
EN

Stack Overflow用户
提问于 2022-01-01 20:51:33
回答 1查看 846关注 0票数 1

我想使用className属性来设计mui图标,但是它不起作用。但是,当我应用内联样式时,它就像预期的那样工作。组件中有一些图标,我想以相同的方式设计,这就是为什么我不想使用内联样式并多次复制相同的代码。我做错了什么?有人能帮忙吗?

代码语言:javascript
复制
import React from 'react';
import FacebookIcon from '@mui/icons-material/Facebook';
import TwitterIcon from '@mui/icons-material/Twitter';
import { makeStyles } from '@mui/styles';

const useStyles = makeStyles({
    root: {
        fontSize: '50px',
        margin: '10px',
        color: 'primary'
    }
});

const Links = () => {

    const classes = useStyles();

    return(
        <div>
            //this doesn't work
            <TwitterIcon className={classes.root} />

            //this works
            <FacebookIcon sx= {{ fontSize:'50px', margin:'10px', color:'primary' }} />  
        </div>
    );
}

export default Links;

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-02 08:27:02

makeStyles是依赖于JSS的遗留API,而不是情感。除非您支持旧版本的Mui,否则不应该使用它。

推荐的方法是要么使用styled,要么在theme对象中指定变体。

代码语言:javascript
复制
import { styled } from '@mui/material'

const SocialMediaIcon = styled(Icon)(({ theme }) => ({
  fontSize: 50,
  margin: 10,
  color: theme.palette.text.primary,
}))

<SocialMediaIcon component={TwitterIcon} />
代码语言:javascript
复制
const theme = createTheme({
  components: {
    MuiIcon: {
      variants: [
        {
          props: { variant: 'social' },
          style: {
            fontSize: 50,
            margin: 10,
            color: 'primary',
          },
        },
      ],
    },
  },
})

<Icon variant="social" component={Instagram} />

演示。

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

https://stackoverflow.com/questions/70551786

复制
相关文章

相似问题

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