GWo*_*ing 4 javascript reactjs react-props react-component
我有一个像这样的通用组件
const Img = ({ component }) => {
const image_ref = useRef()
return (
<>
{component
ref={image_ref}
}
</>
)
}
Run Code Online (Sandbox Code Playgroud)
我想将它与其他像这样的组件一起使用
const MyImg = () => <Img component={<MySpecificImg />} />
const MyBackImg = () => <Img component={<MySpecificBackImg />} />
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?
需要的是能够改变<Img/>组件调用的组件
如果您将 prop 作为 传递<MySpecificBackImg />,那么您将传递一个 JSX 元素,您可以在Img组件中将其呈现为:
const Img = ({ element }) => {
const image_ref = useRef()
const elementWithRef = React.cloneElement(element, { ref: image_ref });
return (
<>
{element}
</>
)
}
Run Code Online (Sandbox Code Playgroud)
如果您正在传递组件,您可以从示例中轻松完成:
const Img = ({ component: Component }) => {
const image_ref = useRef()
return (
<>
<Component ref={image_ref} />
</>
)
}
Run Code Online (Sandbox Code Playgroud)
请注意,ref在这两种情况下都附加到外部元素,如果这是一个组件实例,则必须使用forwardRef将其转发到内部 DOM 元素。
| 归档时间: |
|
| 查看次数: |
6098 次 |
| 最近记录: |