【发布时间】:2019-12-17 14:29:41
【问题描述】:
我想将许多预先存在的按钮 CSS 定义压缩到一个样式组件中。我通过使用条件扩展我的定义找到了积极的结果,但是我已经到了定义变得相当大的地步,我想知道是否有一种方法可以用某种switch 来浓缩我的定义将 CSS 抽象为返回的内容的语句?
用例:
我有一个自定义的<Button> 组件,它需要几个道具theme 和type,所以我的按钮示例如下:
<Button theme="primary" category="my-cat">Click me</Button>
theme 和 category 将分别采用 2 个不同的变量,所以到目前为止没有什么疯狂的想法......
到目前为止,我的定义已经变得臃肿:
export const Button = styled.a`
background: lightgrey;
// ... More standard stuff
${props => (props.theme === 'one' || props.theme === 'two') && `
// ... more CSS
`}
${props => (props.theme === 'one' && props.category === 'cat1') && `
// ... more CSS
`}
${props => (props.theme === 'one' && props.category === 'cat2') && `
// ... more CSS
`}
`;
是否有可能做一些事情,以便我可以将我的道具传递给一个函数并根据这些道具和条件操作返回添加的 CSS?比如:
function styleMyEl(props) {
switch(props) {
case (props.theme === 'one' || props.theme === 'two'):
// return my additional css
case ...
default:
return;
}
}
export const Button = styled.a`
background: lightgrey;
// ... More standard stuff
${props => styleMyEl(props)}
【问题讨论】:
标签: javascript css reactjs styled-components