如何在子选择器中将道具传递给 material-ui 样式
How to pass props to to material-ui styles in a sub-selector
如果有人问和回答这个问题,我们通常会道歉...
我有一个样式表:
const styles = createStyles({
root: {background: 'blue', color: 'red'},
highlightedWrapper: {
'& $root': {
background: 'green',
color: 'black'
}
}
})
...我这样调用:
const useStyles = makeStyles(kanbanStyles);
...然后像这样在我的组件中引用:
const classes = useStyles()
到目前为止,还不错。我希望能够做的是将道具传递给 useStyles()
,然后我将在样式表中引用它。所以这有效:
const classes = useStyles({color: 'yellow'})
const styles = createStyles({
root: (props) => { return {background: 'blue', color: props.color}},
highlightedWrapper: {
'& $root': {
background: 'green',
color: 'black'
}
}
})
...但我不知道如何调用子选择器内的函数。比如,这对我不起作用:
const styles = createStyles({
root: {background: 'blue', color: props.color},
highlightedWrapper: {
'& $root': {
background: 'green',
color: (props) => props.color
}
}
})
我已经尝试了上述语法的各种排列,将其放在 hightlightedWrapper:
之后和 '& $root':
之后,但没有任何效果。
帮忙?
谢谢!!
向@RyanCogswell 提供答案,但问题是,如果您要为样式使用函数,为了处理动态道具,您必须在引用该样式的任何地方使用一个函数。所以这会中断:
wrapper: {
'& $name': {
color: (props) => (props.color ? props.color : 'blue')
}
},
name: {
color: 'green'
}
...但这会起作用:
wrapper: {
'& $name': {
color: (props) => (props.color ? props.color : 'blue')
}
},
name: {
color: (props) => 'green'
}
注意 (props) => 'green'
.
这是一个可能不会很快得到解决的错误:
https://github.com/mui-org/material-ui/issues/13672#issuecomment-541118923
如果有人问和回答这个问题,我们通常会道歉...
我有一个样式表:
const styles = createStyles({
root: {background: 'blue', color: 'red'},
highlightedWrapper: {
'& $root': {
background: 'green',
color: 'black'
}
}
})
...我这样调用:
const useStyles = makeStyles(kanbanStyles);
...然后像这样在我的组件中引用:
const classes = useStyles()
到目前为止,还不错。我希望能够做的是将道具传递给 useStyles()
,然后我将在样式表中引用它。所以这有效:
const classes = useStyles({color: 'yellow'})
const styles = createStyles({
root: (props) => { return {background: 'blue', color: props.color}},
highlightedWrapper: {
'& $root': {
background: 'green',
color: 'black'
}
}
})
...但我不知道如何调用子选择器内的函数。比如,这对我不起作用:
const styles = createStyles({
root: {background: 'blue', color: props.color},
highlightedWrapper: {
'& $root': {
background: 'green',
color: (props) => props.color
}
}
})
我已经尝试了上述语法的各种排列,将其放在 hightlightedWrapper:
之后和 '& $root':
之后,但没有任何效果。
帮忙?
谢谢!!
向@RyanCogswell 提供答案,但问题是,如果您要为样式使用函数,为了处理动态道具,您必须在引用该样式的任何地方使用一个函数。所以这会中断:
wrapper: {
'& $name': {
color: (props) => (props.color ? props.color : 'blue')
}
},
name: {
color: 'green'
}
...但这会起作用:
wrapper: {
'& $name': {
color: (props) => (props.color ? props.color : 'blue')
}
},
name: {
color: (props) => 'green'
}
注意 (props) => 'green'
.
这是一个可能不会很快得到解决的错误: https://github.com/mui-org/material-ui/issues/13672#issuecomment-541118923