使用React Styled Components在两种类型的组件之间共享相同的样式

Aar*_*sen 3 css typescript reactjs visual-studio-code styled-components

我想将完全相同的样式应用于样式化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}`
Run Code Online (Sandbox Code Playgroud)

有没有做到这一点的更好方法,而无需使用“原始”字符串?使用原始styles字符串的缺点是Visual Studio Code不会语法突出显示它:

在此处输入图片说明

Ale*_* L. 6

您在这里有几个选择:

CSS的助手功能

const styles = css`
  background-color: white;
  // ...
`;

const Select = styled.select`${styles}`;
const Input = styled.input`${styles}`;
Run Code Online (Sandbox Code Playgroud)

withComponent方法

const Select = styled.select`
  background-color: white;
  // ...
`;
const Input = Select.withComponent('input');
Run Code Online (Sandbox Code Playgroud)

“ as”多态道具(在v4中添加):

<Select as="input">
  ...
</Select>
Run Code Online (Sandbox Code Playgroud)