根据 styled-components 中的 parent 属性更改嵌套组件的样式?
change nested component's style based on parent props in styled-components?
假设我有一个包装器组件,其中包含一些其他组件:
const Card = styled.div`
background-color: ${props => props.selected ? 'green' : 'none'}
`
<Card>
<Header>
<Logo/>
</Header>
<Footer/>
</Card>
它们都是有样式的组件。当我将 selected
道具传递给它时,卡片变成绿色。如何根据传递给 <Card>
的道具更改 <Logo>
的样式?
例如,在纯 css 中我是这样做的:
.card.selected {
background-color: green;
}
.card.selected .logo {
opacity: 1;
}
在 styled-components 中复制此行为的最佳方法是什么?我不喜欢将 selected
道具传递给 <Card>
的所有 children 的想法。
事实证明这实际上很简单。
const Card = styled.div`
background-color: ${props => props.selected ? 'green' : 'none'};
${Logo} {
opacity: ${props => props.selected ? 1 : 0};
}
`
而这个特征是documented here
假设我有一个包装器组件,其中包含一些其他组件:
const Card = styled.div`
background-color: ${props => props.selected ? 'green' : 'none'}
`
<Card>
<Header>
<Logo/>
</Header>
<Footer/>
</Card>
它们都是有样式的组件。当我将 selected
道具传递给它时,卡片变成绿色。如何根据传递给 <Card>
的道具更改 <Logo>
的样式?
例如,在纯 css 中我是这样做的:
.card.selected {
background-color: green;
}
.card.selected .logo {
opacity: 1;
}
在 styled-components 中复制此行为的最佳方法是什么?我不喜欢将 selected
道具传递给 <Card>
的所有 children 的想法。
事实证明这实际上很简单。
const Card = styled.div`
background-color: ${props => props.selected ? 'green' : 'none'};
${Logo} {
opacity: ${props => props.selected ? 1 : 0};
}
`
而这个特征是documented here