React Developer Tools提供了很多功能来检查 React 组件树,并查看props、事件处理程序等。但是,我真正想做的是能够在浏览器控制台中检查这些数据结构。
在 chrome 中,我可以使用$0
. 有没有办法从 中提取 React 组件信息$0
,或者是否可以使用 React Dev Tools 做类似的事情?
React Developer Tools提供了很多功能来检查 React 组件树,并查看props、事件处理程序等。但是,我真正想做的是能够在浏览器控制台中检查这些数据结构。
在 chrome 中,我可以使用$0
. 有没有办法从 中提取 React 组件信息$0
,或者是否可以使用 React Dev Tools 做类似的事情?
使用React Developer Tools,您可以$r
获取对所选 React 组件的引用。
下面的屏幕截图显示了我React Developer Tools
用来选择一个组件 ( Explorer
),它有一个名为 的状态对象nodeList
。在控制台中,我现在可以简单地写入$r.state.nodeList
以引用状态中的此对象。与props相同的作品(如:$r.props.path
)
您的问题的答案可以在我问的类似问题中找到: React - 从 DOM 元素获取组件以进行调试
我在这里提供答案是因为我没有必要的声誉点来标记为重复或在上面发表评论。
基本上,如果您使用 react 的开发版本,这是可能的,因为您可以利用 TestUtils 来实现您的目标。
你只需要做两件事:
所以控制台中的代码可能类似于:
> getComponent($0).props
getComponent 的实现可以React.addons.TestUtils.findAllInRenderedTree
通过在所有找到的组件上调用 getDOMNode 并与传入的元素进行匹配来搜索匹配项。
打开控制台(Firefox、Chrome)并定位任何 reactjs 渲染的 DOM 元素或执行 js 脚本来定位它:
document.getElementById('ROOT')
然后在对象属性查看器中检查元素属性以获取名称以“__reactInternalInstace$....”开头的属性,展开 _DebugOwner 并查看 stateNode。
找到的 stateNode 将包含(如果有)'state' 和 'props' 属性,这些属性在 reactjs 应用程序中被大量使用。