React Developer Tools给予了很多功能来检查React组件树,并查看props,事件处理程序等。然而,我真正想做的是能够在浏览器控制台中检查这些数据结构。
在chrome中,我可以使用$0
在控制台中使用当前选定的DOM元素。有没有一种方法可以从$0
中提取React组件信息,或者有没有可能使用React Dev Tools做类似的事情?
React Developer Tools给予了很多功能来检查React组件树,并查看props,事件处理程序等。然而,我真正想做的是能够在浏览器控制台中检查这些数据结构。
在chrome中,我可以使用$0
在控制台中使用当前选定的DOM元素。有没有一种方法可以从$0
中提取React组件信息,或者有没有可能使用React Dev Tools做类似的事情?
6条答案
按热度按时间bt1cpqcv1#
使用React Developer Tools,你可以使用
$r
来获取对所选React组件的引用。下面的屏幕截图显示了我使用
React Developer Tools
来选择一个组件(Explorer
),该组件有一个名为nodeList
的状态对象。在控制台中,我现在可以简单地写$r.state.nodeList
来引用状态中的这个对象。 prop 也是如此(例如:$r.props.path
)rhfm7lfc2#
你的问题的答案可以在我提出的类似问题中找到:React - getting a component from a DOM element for debugging
我在这里提供一个答案,因为我没有必要的声誉点,以标记为重复或评论以上。
基本上,如果您使用react的开发版本,这是可能的,因为您可以利用TestUtils来实现您的目标。
你只需要做两件事:
因此,控制台中的代码可能类似于:
getComponent的实现可以使用
React.addons.TestUtils.findAllInRenderedTree
来搜索匹配,方法是在所有找到的组件上调用getDOMNode,并与传入的元素进行匹配。q9yhzks03#
打开控制台(Firefox,Chrome)并定位任何reactjs渲染的DOM元素,或者执行js脚本来定位它:
然后在对象属性查看器中检查元素属性,以查找名称以'__reactInternalInstace$....'开头的属性expand _DebugOwner并查看stateNode。
找到的stateNode将包含(如果它有)'state'和'props'属性,这在reactjs应用程序中被大量使用。
t40tm48m4#
虽然公认的答案是有效的,并且是一个很好的方法,但在2020年,你现在可以在不使用
$r
方法的情况下进行大量检查。React DevTools的Components选项卡会在您选择相关组件时显示props和详细状态(确保您处于正确的级别),还可以让您执行其他操作,例如暂停或检查匹配的DOM元素(右上角的小图标)。osh3o9ms5#
将state或prop对象指定给window对象:
然后从开发工具控制台,你可以在暴露的对象上尝试不同的方法,比如:
8
vsaztqbk6#
您可以像这样将引用附加到窗口对象
然后从控制台访问它