reactjs – 从React子元素获取DOM节点

使用v0.13.0中引入的React.findDOMNode方法,我能够通过在this.props.children上映射来获取传递到父组件的每个子组件的DOM节点。

然而,如果一些孩子碰巧是React元素而不是组件(例如,一个孩子是通过JSX创建的< div>),React会抛出一个不变的违规错误

有没有办法获得正确的DOM节点的每个孩子后挂载无论什么类的孩子是?

this.props.children应该是ReactElement或ReactElement的数组,而不是组件。

获取children元素的DOM节点,您需要克隆它们并为它们分配一个新的引用。

render() {
  return (
    <div>
      {React.Children.map(this.props.children,(element,idx) => {
        return React.cloneElement(element,{ ref: idx });
      })}
    </div>
  );
}

然后,您可以通过this.refs [childIdx]访问子组件,并通过ReactDOM.findDOMNode(this.refs [childIdx])检索其DOM节点。

相关文章

一、前言 在组件方面react和Vue一样的,核心思想玩的就是组件...
前言: 前段时间学习完react后,刚好就接到公司一个react项目...
前言: 最近收到组长通知我们项目组后面新开的项目准备统一技...
react 中的高阶组件主要是对于 hooks 之前的类组件来说的,如...
我们上一节了解了组件的更新机制,但是只是停留在表层上,例...
我们上一节了解了 react 的虚拟 dom 的格式,如何把虚拟 dom...