Mos*_*she 9 javascript reactjs styled-components
我正在尝试将类名添加到 React 组件,以便我可以更轻松地使用样式化组件自定义该组件。以下是该组件的简化轮廓:
const SignupForm = props => (
<form>
<Input className="input" />
<Button className="button" />
</form>
)
Run Code Online (Sandbox Code Playgroud)
这是我想如何使用它:
import { SignupForm } from '../path/to/signup-form'
<Form />
...
const Form = styled(SignupForm)`
.input {
/* Custom Styles */
}
.button {
/* Custom Styles */
}
`
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用。只有当我创建一个包装组件时它才会工作 - 像这样:
import { SignupForm } from '../path/to/signup-form'
<FormWrapper>
<SignupForm/>
<FormWrapper>
...
const FormWrapper = styled.div`
.input {
/* Custom Styles */
}
.button {
/* Custom Styles */
}
`
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种方法可以访问.input和.button类而无需创建包装类,即通过实际导入的类本身?如果是这样,如何?
Ash*_*war 24
className只需使用attrs现有样式组件添加额外的属性即可。
const FormWrapper = styled.div.attrs({
className: 'SignupForm',
})`
.input {
/* Custom Styles */
}
.button {
/* Custom Styles */
}
`
Run Code Online (Sandbox Code Playgroud)
Den*_*ash 10
您需要提供className包装器/容器作为styled-component通过它注入样式:
const SignupForm = ({ className }) => (
<form className={className}>
<input className="input" />
<button className="button">Button</button>
</form>
);
const Form = styled(SignupForm)`
.input {
background-color: palegreen;
}
.button {
background-color: palevioletred;
}
`;
Run Code Online (Sandbox Code Playgroud)