Google chrome devtools 如何在控制台中检查react元素的道具和状态?

Google chrome devtools 如何在控制台中检查react元素的道具和状态?,google-chrome-devtools,reactjs,Google Chrome Devtools,Reactjs,提供大量的功能来检查React组件树,并查看道具、事件处理程序等。但是,我真正想做的是能够在浏览器控制台中检查这些数据结构 在chrome中,我可以使用$0在控制台中使用当前选定的DOM元素。有没有办法从$0中提取React组件信息,或者可以使用React开发工具执行类似的操作?您的问题可以在我提出的类似问题中找到答案: 我在这里提供一个答案,因为我没有必要的信誉点来标记为重复或评论上面 基本上,如果您使用react的开发构建,这是可能的,因为您可以利用TestUtils来实现您的目标 您只需

提供大量的功能来检查React组件树,并查看道具、事件处理程序等。但是,我真正想做的是能够在浏览器控制台中检查这些数据结构


在chrome中,我可以使用$0在控制台中使用当前选定的DOM元素。有没有办法从$0中提取React组件信息,或者可以使用React开发工具执行类似的操作?

您的问题可以在我提出的类似问题中找到答案:

我在这里提供一个答案,因为我没有必要的信誉点来标记为重复或评论上面

基本上,如果您使用react的开发构建,这是可能的,因为您可以利用TestUtils来实现您的目标

您只需要做两件事:

静态存储从React.render获得的根级别组件。 创建一个全局调试助手函数,可以在控制台中使用$0访问静态组件。 因此,控制台中的代码可能类似于:

> getComponent($0).props

getComponent的实现可以使用React.addons.TestUtils.findAllInRenderedTree来搜索匹配项,方法是在所有找到的组件上调用getDOMNode并与传入的元素进行匹配。

将状态或prop对象分配给窗口对象:

window.title = this.state.title
然后,从开发工具控制台,您可以在公开对象上尝试不同的方法,例如:

window.title.length
八,

使用可以使用$r获取对所选React组件的引用

下面的屏幕截图显示了我使用React Developer工具选择一个组件资源管理器,它有一个名为NodeList的状态对象。在控制台中,我现在可以简单地编写$r.state.nodeList来引用状态中的这个对象。同样适用于道具,例如:$r.props.path


打开控制台Firefox、Chrome并定位任何reactjs呈现的DOM元素,或者执行js脚本来定位它:

document.getElementById('ROOT')
然后在对象属性查看器中检查元素属性,查找名称以“\uu reactInternalInstance$..”开头的属性展开\u DebugOwner并查看stateNode


找到的stateNode将包含是否具有在reactjs应用程序中大量使用的“state”和“props”属性。

虽然接受的答案有效,而且是一种很好的方法,但在2020年,您现在可以不用使用$r方法进行大量检查。React DevTools的Components选项卡将在您选择相关组件时显示道具和详细状态,确保您处于正确的级别,并允许您执行其他操作,如挂起它或检查右上角匹配的DOM元素小图标。

为什么不在组件中记录状态和道具呢?因为这需要更多的时间。我自己还没有尝试过,但他们在React 0.13中介绍了这一点。理论上,可以选择您的DOM元素,通过React.findDOMNode$0将其转换为React元素,并通过该React元素访问您的状态和道具?@trekforever它只返回相同的本机DOM节点。考虑到这个问题是先问的,新问题不是重复的吗?看起来$r i只是DOM节点,不是react组件实例。不确定您的意思。但问题是如何检查react组件的数据结构。我认为$r可以让你做到这一点。是的,纯粹是为了调试,比如:window.reacjs=React;window.reacjsStore=store;