【发布时间】:2019-08-19 16:37:06
【问题描述】:
我在我的 react 应用程序中使用 styled-components 库,我遇到了一个有趣的问题,我无法在网上找到一个优雅的解决方案。我想要实现的是拥有一段可重用的代码,可能类似于 sass mixins,这将允许我使用在悬停时使背景变暗的代码扩展我的所有按钮。
const DarkenHover = css<{ active?: boolean; normalColor: string; activeColor: string }>`
background-color: ${p => (p.active ? p.normalColor : p.activeColor)};
&:hover {
background-color: ${p => darken(0.1)(p.active ? p.normalColor : p.activeColor)};
}
transition: background-color .1s ease-in;
`;
const FooButton = styled.div<{ active?: boolean }>`
${p => DarkenHover({
active: p.active,
normalColor: "red",
activeColor: "blue",
})}
`;
const FooButton = styled.div<{ active?: boolean }>`
${p => DarkenHover({
active: p.active,
normalColor: "white",
activeColor: "green",
})}
`;
这显然不是有效的语法,但它演示了我的用例。我怎样才能使用这个带有属性的DarkenHover css 对象?
【问题讨论】:
标签: javascript typescript mixins styled-components