不幸的是,你不能。我深入研究了包本身,似乎这个包中编写的组件没有固定的规则。一些组件确实得到props
和sx
。但是有些组件,例如switch
将另一个组件作为子组件托管,并且没有传递给它的道具。
如果您在switch
此处查看此页面中的实现:
export const Switch = forwardRef(({
checked,
...props
}, ref) =>
<Box
ref={ref}
as='button'
type='button'
role='switch'
tx='forms'
variant='switch'
aria-checked={checked}
{...props}
__css={{
appearance: 'none',
m: 0,
p: 0,
width: 40,
height: 24,
color: 'primary',
bg: 'transparent',
border: '1px solid',
borderColor: 'primary',
borderRadius: 9999,
'&[aria-checked=true]': {
bg: 'primary',
},
':focus': {
outline: 'none',
boxShadow: '0 0 0 2px'
},
}}>
<Box
aria-hidden
style={{
transform: checked ? 'translateX(16px)' : 'translateX(0)',
}}
sx={{
mt: '-1px',
ml: '-1px',
width: 24,
height: 24,
borderRadius: 9999,
border: '1px solid',
borderColor: 'primary',
bg: 'background',
transitionProperty: 'transform',
transitionTimingFunction: 'ease-out',
transitionDuration: '0.1s',
variant: 'forms.switch.thumb',
}}
/>
</Box>
)
有 2 个Box
组件(它们是包的基本组件),一个是另一个的子组件。第一个Box
是开关的区域,子Box
元素是你要找的圆圈/按钮,如果你看一下这个组件,你会发现没有传递给它的外部变量,所以什么都不能改变 -样式已经写好了。
这是 Button/Circle 组件:
<Box
aria-hidden
style={{
transform: checked ? 'translateX(16px)' : 'translateX(0)',
}}
sx={{
mt: '-1px',
ml: '-1px',
width: 24,
height: 24,
borderRadius: 9999,
border: '1px solid',
borderColor: 'primary',
bg: 'background',
transitionProperty: 'transform',
transitionTimingFunction: 'ease-out',
transitionDuration: '0.1s',
variant: 'forms.switch.thumb',
}}
/>
如果你仍然愿意使用那个包,你可以通过覆盖 css 来克服这个问题,给组件一个 className 并将样式应用到它的子组件。
另外,您可以在包 github 存储库上打开问题或提出修复建议。