当前位置: 首页 > 面试题库 >

React-从DOM元素获取组件进行调试

翟卓君
2023-03-14
问题内容

为了在控制台中进行调试,React中是否有任何机制可以使用DOM元素实例来获取支持的React组件?

先前已经在生产代码中使用此问题时询问过此问题。但是,我的重点是用于调试目的的开发版本。

我熟悉React的Chrome调试扩展,但是并非在所有浏览器中都可用。结合使用DOM
Explorer和控制台,可以很容易地使用“ $ 0”快捷方式来访问有关突出显示的DOM元素的信息。

我想在调试控制台中编写如下代码:getComponentFromElement($ 0).props

即使在React开发构建中,也没有机制可以使用元素的ReactId来获取组件吗?


问题答案:

我刚刚阅读了文档,并且afaik没有一个外部公开的API可以让您直接进入并通过ID查找React组件。但是,您可以更新初始React.render()调用并将返回值保留在某个位置,例如:

window.searchRoot = React.render(React.createElement......

然后,您可以引用searchRoot并直接进行浏览,或使用遍历它React.addons.TestUtils。例如,这将为您提供所有组件:

var componentsArray = React.addons.TestUtils.findAllInRenderedTree(window.searchRoot, function() { return true; });

有几种内置方法可以过滤此树,或者您可以编写自己的函数以仅根据所编写的某些检查返回组件。

有关TestUtils的更多信息,请访问:https://facebook.github.io/react/docs/test-
utils.html



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

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

  • 但是,如果有些子元素碰巧是React元素而不是组件(例如,其中一个子元素是通过JSX创建的 ),React将抛出一个不变的冲突错误。 是否有一种方法可以在挂载后获得每个子节点的正确DOM节点,而不管子节点是什么类? 匿名用户 应该是ReactElement或ReactElement数组,但不是组件。 要获得子元素的DOM节点,需要克隆它们并为它们分配一个新的引用。 然后,您可以通过访问子组件,并通

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

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

  • 我使用Thymeleaf创建html组件。组件在单独的文件中声明: 中基本按钮的声明 这个想法是为组件提供某种类型的工具集。使用此组件的代码将是: 它运行良好,但我考虑了按钮需要具有以下属性的情况:或或任何其他属性。问题来了: 如何将属性传递给按钮? 一种方法是将其作为片段的参数传递,但它太丑了。 有什么方法可以获取片段中占位符的属性吗?(见下面的示例) 我想这样调用片段: 并且在片段中想要获取这