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

标签 reactjs

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

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

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

最佳答案

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

要获取子元素的 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 节点。

关于reactjs - 从 React 子元素获取 DOM 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29568721/

相关文章:

javascript - 如何在 React Native 中提交表单

javascript - 使用 React 更新 HTML5 视频的源 URL

reactjs - 如何从组件外部调用静态变量?

javascript - 无法让 shouldComponentUpdate() 在 native react 中工作

javascript - 我正在学习react.js,但我发现很难理解react应用程序在部署后将如何工作?

javascript - React/Flux - 保持状态属性井井有条?

reactjs - 在 React 应用程序中测试 Select 元素

html - 如何获取托管在 github 页面上的 Markdown 文件以显示在 React 应用程序中?

javascript - Native-React + Expo : Unable to resolve "@expo/vector-icons/fonts/Ionicons.ttf" from "src/boot/setup.js"

javascript - 如何将 JSON 对象从快速服务器发送到下一个 js 页面?