React.CloneElement未渲染克隆元素,求助问题排查
问题排查与解决
两个关键错误导致子元素不渲染:
标签未正确闭合
你在ParentComponent里的<Wrapper>结束标签写错了,应该是</Wrapper>而不是<Wrapper>,语法错误直接导致React无法正确解析组件结构,引发渲染失败。React.cloneElement参数误用
你调用React.cloneElement时传了第三个参数null,这个参数会覆盖被克隆元素的原有子节点。原本<ChildrenComponent>内部的文本内容会被null替换,就算标签没问题,子元素的内容也会消失。
修正后的代码:
包装组件(两种写法都可以)
第一种:省略第三个参数,默认保留原元素的子节点
import React from 'react'; export const Wrapper = ({ children }: { children: JSX.Element }) => { return React.cloneElement(children, { somePropFromWrapper: 'Yoo!' }); };
第二种:显式传入原元素的子节点,效果和上面一致
import React from 'react'; export const Wrapper = ({ children }: { children: JSX.Element }) => { return React.cloneElement(children, { somePropFromWrapper: 'Yoo!' }, children.props.children); };
父组件(修正闭合标签)
const ParentComponent = () => { return ( <Wrapper> <ChildrenComponent id="children-id"> the children inner html </ChildrenComponent> </Wrapper> ) }
内容的提问来源于stack exchange,提问作者noer
相关产品推荐
相关产品推荐

