做一个简单的应用程序时,它在启动时出错Target container is not a DOM element.
。我的问题是什么?
import React from "react";
import ReactDOM from "react-dom";
import { BrowserRouter } from "react-router-dom";
import App from "./App";
import * as serviceWorker from "./serviceWorker";
ReactDOM.render(
<BrowserRouter>
<App />
</BrowserRouter>,
document.getElementById("root")
);
serviceWorker.unregister();
到脚本执行时,文档元素还不可用,因为脚本本身显然在标题中。
该方法通过其标识符 ( ) 或在文档中未找到具有指定
document.getElementById
标识符的元素时返回对该元素的引用。显然第二个参数进来了。ID
null
ID
ReactDOM.render
null
最好将您的脚本放在 HTML 文档正文的最后,并在声明脚本之前渲染根组件,如下所示
root
:div
我还建议你把
BrowserRouter
它放在你的组件App
中——它会更正确,而且看起来更容易:我的错误是这个。该文件
public/index.html
具有以下标记:添加
body
并且一切正常:最通用的解决方案是使用load 事件。
这种方法的主要优点是保证在 DOM 完全加载后执行此代码,无论您将 tag 放在哪里
<script>
。还应该记住,在放置
<script>
在末尾的情况下,<body>
行为会略有不同。例如,图片可能未加载或 Web 组件可能未初始化。