Alb*_*Gao 10 styled-components
我有一个 3rd 方库,它需要calendarClassName
修改它的样式,它需要一个 CSS 类的传统类名。我可以使用样式组件来完成此任务吗?
我尝试了css
函数,但它不起作用,结果是样式数组而不是 CSS 类实体。
只想做这样的事情:
const myStyle = css`color: black`;
<DatePicker calendarClassName={myStyle}> // won't work
Run Code Online (Sandbox Code Playgroud)
尝试attrs
没有任何运气,className 没有传递给 DatePicker。
const calendarClassName = "calendar";
export const MyDatePicker = styled(DatePicker).attrs({
calendarClassName,
})`
.${calendarClassName} {
border-radius: 0px;
box-shadow: 2px 0px 2.5px #D6D6D6;
border: 1px solid ${color.pacific};
}
`;
Run Code Online (Sandbox Code Playgroud)
我知道我可以直接使用 CSS,但我只想知道如何使用 CSSstyled-components
来完成这项工作。
谢谢 :)
styled-components
不提供在不将类名附加到组件的情况下生成类名的方法。但是,我们可以利用此功能来实现您的需求。
className
重命名如果您需要使用 styled-components 生成的类名,假设我们知道它将附加到className
prop 上,您可以创建一个中间组件来根据需要操作它。
const ClassNameToCalendarClassName = ({ className, ...rest }) => (
<Calendar calendarClassName={className} {...rest} />
);
const SConvertClassNameToCalendarClassName = styled(ClassNameToCalendarClassName)`
color: blue;
`;
Run Code Online (Sandbox Code Playgroud)
className
命名className
对于在代码中的给定点需要多个 s 的情况,您将需要与所需的类一样多的中间组件:
const ClassNameToC3 = ({ c1, c2, className, ...rest }) => (
// if you pass {...rest}, c1 and c2 are redundant, but included for clarity
<Calendar c1={c1} c2={c2} c3={className} {...rest} />
);
const ClassNameToC2 = ({ className, ...rest }) => (
<ClassNameToC3 c2={className} {...rest} />
);
const ClassNameToC1 = ({ className, ...rest }) => (
<ClassNameToC2 c1={className} {...rest} />
);
Run Code Online (Sandbox Code Playgroud)
以及匹配样式的组件,
// Styled components
const SClassNameToC3 = styled(ClassNameToC3)`...`;
const SClassNameToC2 = styled(ClassNameToC2)`...`;
const SClassNameToC1 = styled(ClassNameToC1)`...`;
Run Code Online (Sandbox Code Playgroud)
Moh*_*dat -2
calendarClassName
我认为如果应用于嵌套元素,这种方法可以解决您的问题。
const StyledDatePicker = styled(DatePicker)`
.calendarClassName {
border-radius: 0px;
box-shadow: 2px 0px 2.5px #D6D6D6;
border: 1px solid ${color.pacific};
}
`;
<StyledDatePicker calendarClassName="calendarClassName">
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7939 次 |
最近记录: |