【发布时间】:2019-07-03 13:08:37
【问题描述】:
我不明白React official docs 中写的陈述的重点:
cloneElement()
React.cloneElement( element, [props], [...children] )使用 element 作为起点克隆并返回一个新的 React 元素。结果元素将具有原始元素的道具和新道具的浅层合并。新的孩子将取代现有的孩子。原始元素的 key 和 ref 将被保留。
React.cloneElement() 几乎等同于:
<element.type {...element.props} {...props}>{children}</element.type>但是,它也保留了 refs。这意味着如果你得到一个带有 ref 的孩子,你不会不小心从你的祖先那里偷走它。您将获得附加到新元素的相同 ref。
让我感到困惑的是声明 这意味着如果你得到一个带有 ref 的孩子,你不会不小心从你的祖先那里偷走它。您将获得附加到新元素的相同 ref。
如果我理解好的,即使 Parent 被克隆,指向 Parent 组件中 Child 元素的 ref 也会被保留。所以在React.cloneElement(Parent) 之后,有两个单独的Parents(内部具有相同的深度值,包括ref),并且都分别具有refs,并且这些refs 指向同一个Child。我说的对吗?
那么祖先有什么用呢?这种情况下的祖先是什么?
【问题讨论】:
标签: javascript reactjs