当前位置: 首页 > 知识库问答 >
问题:

从React子元素获取DOM节点

姚乐家
2023-03-14

但是,如果有些子元素碰巧是React元素而不是组件(例如,其中一个子元素是通过JSX创建的

),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节点。

共有2个答案

冯翔
2023-03-14
相关问题
奚高扬
2023-03-14

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节点。

 类似资料:
  • 问题内容: 使用v0.13.0中引入的方法,我可以通过映射到来获取传递给父级的每个子组件的DOM节点。 但是,如果某些子项恰好是React Elements而不是Components(例如,其中一个子项是通过JSX创建的),则React会引发不变的违规错误。 挂载后,是否有一种方法可以获取每个子级的正确DOM节点,而不管该子级是什么类? 问题答案: 应该是一个ReactElement或一个Reac

  • 问题内容: 我希望能够弄清楚哪些React组件与某个DOM元素相关联。 例如,假设我有一个div,并且正在使用React渲染整个应用程序。div必须由React组件呈现-但是哪一个呢? 我知道React提供了方法“ getDOMNode ”来获取与React组件相关联的DOM节点,但是我想做相反的事情。 这可能吗? 问题答案: 没有。 React中的中心概念是您实际上在DOM中没有控件。相反,您的

  • 问题内容: 为了在控制台中进行调试,React中是否有任何机制可以使用DOM元素实例来获取支持的React组件? 先前已经在生产代码中使用此问题时询问过此问题。但是,我的重点是用于调试目的的开发版本。 我熟悉React的Chrome调试扩展,但是并非在所有浏览器中都可用。结合使用DOM Explorer和控制台,可以很容易地使用“ $ 0”快捷方式来访问有关突出显示的DOM元素的信息。 我想在调试

  • 问题内容: 我得到了此功能来获取cssPath: 但是我有这样的事情: 但是完全正确的是,它看起来应该像这样: 有人有任何想法简单地用javascript实现吗? 问题答案: 为了始终获得正确的元素,您将需要使用或来选择不能唯一标识元素的选择器。所以试试这个: 你可以添加一个例行检查在其对应的背景下独特的元素(如,,,等)。

  • 问题内容: 有没有一种方法来获取LinearLayout的子元素?我的代码返回一个视图(linearlayout),但是我需要访问布局内部的特定元素。 有什么建议? (是的,我知道我可以使用findViewById,但是我正在用Java创建布局/子级-而不是XML。) 问题答案: 您可以随时执行以下操作:

  • 问题内容: 我很难理解如何在PHP中使用DOMElement对象。我找到了这段代码,但是我不确定它是否适用于我: 基本上,我需要在DOM中搜索特定的,之后需要提取一个非标准的(即我用JS编写并使用的非标准的),以便可以看到它的价值。原因是我需要从中获取一份,而在HTML中则需要基于重定向。如果有人可以解释一下我如何为此目的使用DOMDocument,那将有所帮助。我真的很难理解发生了什么以及如何正