简体   繁体   English

使用 material-ui 更改父组件中的子组件样式

[英]Changing child-component styles in parent with material-ui

I want to change the style of the child-component from the parent component我想从父组件更改子组件的样式

Let's say this is the child component假设这是子组件

MyButton.js我的按钮.js

import ButtonComponent from '@material-ui/core/Button'

const useStyles = makeStyle((theme) => {
  return {
    root: {
      color: '#724e35',
    }
  },
  });

  const MyButton = () => {
    const classes = useStyles()
    return <ButtonComponent className={classes.root}>Button</ButtonComponent>
  }

export default MyButton

And this is my parent component where I want to change the color of MyButton:这是我要更改 MyButton 颜色的父组件:

ParentComponent.js父组件.js

import MyButton from './MyButton'

const useStyles = makeStyle((theme) => {
  return {
    root: {
      color: '#e1daf9',
    }
  },
  });

  const ParentComponent = () => {
    const classes = useStyles()
    return <MyButton className={classes.root}>Button</MyButton>
  }

export default ParentComponent

So the question is: How can I override child style?所以问题是:如何覆盖子样式? Neither makeStyles nor classes property work makeStyles 和 classes 属性都不起作用

Thank you in advance先感谢您

Your MyButton component should accept a className prop optionally and include that on its Button 's className .您的MyButton组件应该可以选择接受className道具,并将其包含在其ButtonclassName

const MyButton = ({ className = "" }) => {
  const classes = useStyles();
  return <Button className={`${classes.root} ${className}`}>Button</Button>;
};

编辑分心-joliot-6q5xn

Pass the overriding class like this像这样传递覆盖类

MyButton.js我的按钮.js

import ButtonComponent from '@material-ui/core/Button'
const useStyles = makeStyle((theme) => {
      return {
        root: {
          color: '#724e35',
        }
      },
      });
    
      const MyButton = ({myButtonStyleOverrideClass = ''}) => {
        const classes = useStyles()
        return <ButtonComponent className={`${classes.root} ${myButtonStyleOverrideClass}`}>Button</ButtonComponent>
      }

export default MyButton

ParentComponent.js父组件.js

import MyButton from './MyButton'

const useStyles = makeStyle((theme) => {
  return {
    root: {
      color: '#e1daf9',
    }
  },
  });

  const ParentComponent = () => {
    const classes = useStyles()
    return <MyButton myButtonStyleOverrideClass={classes.root}>Button</MyButton>
  }

export default ParentComponent

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Material-ui 主题父组件但不是同类型的子组件 - Material-ui theme parent component but not child component of same type 将material-ui生成的样式放置在子组件的样式之后,再放置父组件的样式? - Place styles generated by material-ui for children components after style generated for parent component? React.js Material-UI:以编程方式从子组件中隐藏父组件选项卡 - React.js Material-UI: Programmatically hide parent component tab from child component Material-UI 样式:将功能组件转换为类组件 - Material-UI styles: convert functional component to class component 如何导出具有 2 个样式对象的 react material-ui 组件? (材质-ui V1) - How can I export a react material-ui component with 2 styles object? (material-ui V1) 如何使用 Material-UI 将 styles 添加到 React 中的未知孩子? - How to add styles to an unknown child in React with Material-UI? 自定义 React 组件样式被 Material-UI 样式覆盖 - Custom React Component styles being overwritten by Material-UI style Material UI 样式在组件中不起作用(警告:`@material-ui/styles` 的几个实例) - Material UI styles not working in component (warning: several instances of `@material-ui/styles`) 从子组件更新父组件的状态 - Updating the parent component's state, from a child-component 从 Header 父组件打开 Material-UI 对话框模式 - Opening a Material-UI dialog modal from a Header parent component
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM