[英]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
道具,并将其包含在其Button
的className
。
const MyButton = ({ className = "" }) => {
const classes = useStyles();
return <Button className={`${classes.root} ${className}`}>Button</Button>;
};
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.