Yus*_*ick 5 javascript ref forward-reference reactjs styled-components
我目前正在运行React 16.3.1和Styled Components 3.2.5,遇到尝试使用React.forwardRef的问题。
我有一个Input组件,由包含标签和输入字段的包装div组成。但是,我希望能够将ref直接转发到输入字段,而不必通过主包装div遍历。
const Input = React.forwardRef((props, ref) => (
<Wrapper>
<Label htmlFor={props.id} required={props.required}>
{props.label}
</Label>
<InputField
id={props.id}
...
/>
</Wrapper>
));
Run Code Online (Sandbox Code Playgroud)
那是我组件的简化版本。但是,这会产生以下错误:
Uncaught Error: Cannot create styled-component for component: [object Object]
Run Code Online (Sandbox Code Playgroud)
也许将样式化组件升级到v4会有所帮助?但是,在升级之前,我还没有找到任何解决方案吗?
谢谢。
正如相关问题中所解释的,存在一个阻塞的React Redux 问题,预计将通过此 PR来解决。
解决方法是使用 React 16.3 之前使用的方法forwardRef并使用自定义 prop 而不是ref转发引用:
const Input = ({forwardRef, ...props}) => (
<Wrapper>
<Label htmlFor={props.id} required={props.required}>
{props.label}
</Label>
<InputField
ref={forwardRef}
id={props.id}
...
/>
</Wrapper>
));
Run Code Online (Sandbox Code Playgroud)