我正在 Package Material UI的Chip
组件,以便可以为colors
属性传入“primary”和“secondary”以外的值。我还想保持悬停效果,如果芯片是可点击的,使芯片过渡到一个不同的颜色时,光标在它上面。颜色是作为props传入的,所以设置backgroundColor
和color
很容易:
<Chip
style={{
backgroundColor: props.backgroundColor,
color: props.color
}}
/>
然而,由于我也想传递悬停颜色作为 prop ,我需要做这样的事情:
<Chip
style={{
backgroundColor: props.backgroundColor,
color: props.color,
'&:hover': {
backgroundColor: props.hoverBackgroundColor,
color: props.hoverColor
}
}}
/>
然而,&:hover
(据我所知)不能在style
prop 中使用。通常情况下,&:hover
将在传入withStyles
的样式对象内部使用,但我无法从那里访问props。有什么建议吗?
2条答案
按热度按时间1qczuiv01#
您可以通过创建自己的自定义芯片组件来实现这一点。为了能够使用 prop 来控制样式,您可以使用
makeStyles
。makeStyles
函数返回一个钩子,该钩子可以接受一个对象参数,以便为样式提供变量。下面是一个可能的CustomChip实现:
样式方法(包括使用
emphasize
函数生成悬停和活动颜色)基于内部用于Chip
的方法。然后可以像这样使用:
下面是一个CodeSandbox演示:
下面是Material-UI v5版本的示例:
niknxzdl2#
在Material UI v5中,您可以使用
sx
prop对:hover
等伪类进行样式化:如果你想创建一个可重用的样式化组件,另一个选择是
styled()
: