我想将完全相同的样式应用于样式为input
的元素和样式为select
的元素。
当前,我正在使用字符串插值来做到这一点:
const styles = `
background-color: white;
width: 100%;
border: 0 solid transparent;
border-radius: 10px;
margin-bottom: 20px;
padding-top: 5px;
padding-bottom: 5px;
font-size: 1.2rem;
`
const Select = styled.select`${styles}`
const Input = styled.input`${styles}`
有没有一种更好的方法可以实现,而无需使用“原始”字符串?使用原始styles
字符串的缺点是Visual Studio Code不会对其语法进行突出显示:
答案 0 :(得分:5)
您这里的选择很少:
const styles = css`
background-color: white;
// ...
`;
const Select = styled.select`${styles}`;
const Input = styled.input`${styles}`;
const Select = styled.select`
background-color: white;
// ...
`;
const Input = Select.withComponent('input');
"as" polymorphic prop(在 v4 中添加):
<Select as="input">
...
</Select>
答案 1 :(得分:2)
您可以使用带有css
标记的模板文字:
import styled, { css } from "styled-components";
const styles = css`
background-color: white;
width: 100%;
`;
const Select = styled.select`${styles}`;
const Input = styled.input`${styles}`;
应该正确突出显示语法(未经测试)。