样式扩展
除了可以直接定义已包装样式的组件以外,Styled Components 还支持对已经包装了样式的组件进行扩展,建立新的组件。
const Button = styled.button`
color: pick;
padding: 0.25em 1em;
border-radius: 4px;
`;
const RedButton = styled(Button)`
color: red;
`;
Styled Components 还可以样式化任意组件,例如已经定义好样式的组件。
const Link = ({ className, children }) => <a className={className}>{children}</a>;
const StyledLink = styled(Link)`
color: palevioletred;
`;
Styled Components 还提供了一个 css
方法,可以用来创建样式片段。样式片段可以作为 Mixin 混入其他的样式中。以下给出一个示例供参考。
import styled, { css } from 'styled-components';
const mixin = css`
color: ${props => (props.whiteColor ? 'white' : 'black')};
`;
const Comp = styled.div`
${props => (props.complex ? mixin : 'color: blue;')};
`;