Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用React.cloneElement克隆多个子级?_Javascript_Reactjs - Fatal编程技术网

Javascript 如何使用React.cloneElement克隆多个子级?

Javascript 如何使用React.cloneElement克隆多个子级?,javascript,reactjs,Javascript,Reactjs,我尝试像这样克隆React元素,将父道具传递给它们(本例中未指定道具): 但是,这将返回以下错误: 未捕获不变冲突:元素类型无效:应为 字符串(用于内置组件)或类/函数(用于复合 组件)但得到:未定义 如果只有一个子元素,或者如果我传递React.cloneElement(this.props.children[0],null),则不会出现错误,并呈现所需的元素 如何克隆多个元素?childrenprops是一个不透明的结构,它可以是未定义的、数组或单个元素。您应该使用映射到子结构上: cons

我尝试像这样克隆React元素,将父道具传递给它们(本例中未指定道具):

但是,这将返回以下错误:

未捕获不变冲突:元素类型无效:应为 字符串(用于内置组件)或类/函数(用于复合 组件)但得到:未定义

如果只有一个子元素,或者如果我传递React.cloneElement(this.props.children[0],null),则不会出现错误,并呈现所需的元素


如何克隆多个元素?

children
props是一个不透明的结构,它可以是
未定义的
、数组或单个元素。您应该使用映射到
子结构上:

const style = this.props.style
React.createElement('div',
    { style },
    React.Children.map(this.props.children, (child => React.cloneElement(child, { style })))
)

最小的注释-结尾处缺少结束符
注释:如果
子项
是单个元素或
片段
,它将不会被遍历。@GreeKatrina如果它是单个元素(不是片段),当然会被遍历。@asliwinski文档说不会。@GreeKatrina您一定在阅读不同的文档,绝对不是您链接到的内容:“注意,如果子元素是一个片段,它将被视为单个子元素,并且不会被遍历。”没有任何关于单个元素不会被遍历的内容。
const style = this.props.style
React.createElement('div',
    { style },
    React.Children.map(this.props.children, (child => React.cloneElement(child, { style })))
)