2 回答
TA贡献1757条经验 获得超7个赞
您以这样的样式为目标(我在 javascript 中回答以降低复杂性):
// Button.react.js
export const StyledButton = styled.button`
background-color: #88bdbc;
`;
// Controller.react.js
import { StyledButton } from './Button.react.js';
const StyledController = styled.div`
${StyledButton} {
background-color: blue;
}
`;
TA贡献1911条经验 获得超7个赞
除了丹尼斯·瓦什的回答:
对于我的示例按钮组件,这意味着我需要像这样更改它:
interface IButtonProps {
text?: string
onClick?: React.MouseEventHandler<HTMLButtonElement>
className?: string
}
const UnstyledButton = ({
text = "",
onClick,
className
}: IButtonProps): React.ReactElement => {
return (
<button onClick={onClick} className={className}>{text}</button>
);
};
const Button = styled(UnstyledButton)<IButtonProps>`
height: 70px;
width: 70px;
border: none;
border-radius: 5px;
background-color: #88BDBC;
color: #254E58;
font-family: Alata, sans-serif;
font-size: 35px;
transition: all 350ms;
&:hover {
background-color: #254E58;
color: #88BDBC;
}
&:active {
background-color: #112D32;
color: #88BDBC;
}
`;
原因是:这仅适用于样式化组件的上下文,而不适用于 ReactElement 的上下文。
来自 styled-component 文档的要点: 但是,包装在 styled() 工厂中使其符合插值条件——只需确保包装的组件沿 className 传递。
当你直接从 Styled Component 使用 Button 时(如提到的 Dannis Vash),你可以直接引用它。
添加回答
举报