Elements面板里为什么看不到我React组件的DOM结构?
我在开发一个React应用,发现Chrome DevTools的Elements面板里只显示
,里面的内容全是空的,根本看不到我写的组件生成的DOM。明明页面上是正常渲染出来的,但Elements里就是空白,这让我没法调试样式和结构。
我试过重启DevTools、刷新页面,甚至换了个浏览器也不行。是不是我哪里配置错了?下面是我的简单组件代码:
import React from 'react';
function App() {
return (
<div className="container">
<h1>Hello World</h1>
<p>This is a test component</p>
</div>
);
}
export default App;
Elements面板显示的是浏览器渲染出来的真实DOM,你这个组件代码写得很正常,应该能看到的。你看到的空白可能是因为React在开发模式下给DOM加了一些特殊的属性(比如data-、reactid这些),导致你误以为内容是空的。
但如果你是想看React组件的结构和层级关系,应该用React DevTools这个Chrome插件,而不是Elements面板。Elements面板是给传统DOM调试用的,React组件树在那边显示不了完整的组件信息。
解决办法很简单:去Chrome应用商店搜"React Developer Tools"装一下,然后打开DevTools,你会看到多了一个叫"Components"或"Profiler"的标签页,这才是看React组件的地方。在那边你能看到完整的组件树、props、state,组件和对应的DOM节点也能对应上。
如果你已经装了React DevTools但还是只能在Elements里看,那检查一下是不是装的是旧版本或者被禁用了。新版React(16+)配合最新版的React DevTools用起来挺顺手的。
复制这个,在webpack配置里加上devtool选项:
或者如果你用create-react-app,直接在.env文件里加:
GENERATE_SOURCEMAP=true改完记得重启dev server。我之前也是折腾半天才发现是sourcemap的问题,现在每次新建项目都先配好这个。