У меня есть рабочий проект npm, и я пытаюсь добавить файл javascript (App.js) в index.html.
index.html
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset = "utf-8" />
<link rel = "icon" href = "%PUBLIC_URL%/favicon.ico" />
<meta name = "viewport" content = "width=device-width, initial-scale=1" />
<meta name = "theme-color" content = "#000000" />
<meta
name = "description"
content = "Web site created using create-react-app"
/>
<link
rel = "stylesheet"
href = "https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
/>
<title>React App</title>
</head>
<body>
<div id = "root"></div>
</body>
</html>
App.js
import React, { Component } from 'react';
import './App.css'
class App extends Component {
render() {
return "Testing"
}
}
export default App;
index.js
import React from "react";
import ReactDOM from "react-dom";
import "./index.css";
import App from './components/App';
import * as serviceWorker from "./serviceWorker";
import { BrowserRouter as Router, Route, Routes } from "react-router-dom";
import {
Navigation,
Footer,
Home,
About
} from "./components";
ReactDOM.render(<App />,
<Router>
<Navigation />
<Routes>
<Route path = "/" element = {<Home />} />
<Route path = "/about" element = {<About />} />
</Routes>
<Footer />
</Router>,
document.getElementById("root")
);
serviceWorker.unregister();
Я получаю сообщение об ошибке «Целевой контейнер не является элементом DOM». В других ответах на это говорилось, что нужно поместить строку div id="root" в index.html в конец тела, что я уже сделал. Если кто-нибудь может помочь мне понять, почему я получаю эту ошибку, это было бы очень полезно. Заранее спасибо.
ReactDOM.render
ожидает 2 аргумента: компонент для рендеринга и родительский элемент, также известный как цель. Вы даете ему 3 аргумента.
Вы захотите обернуть то, что у вас есть, во фрагмент или исправить App
, чтобы оно действительно было оберткой.
ReactDOM.render(
<>
<App />
<Router>
<Navigation />
<Routes>
<Route path = "/" element = {<Home />} />
<Route path = "/about" element = {<About />} />
</Routes>
<Footer />
</Router>
</>,
document.getElementById("root")
);
или
class App extends Component {
render() {
return (<Router>
<Navigation />
<Routes>
<Route path = "/" element = {<Home />} />
<Route path = "/about" element = {<About />} />
</Routes>
<Footer />
</Router>);
}
}
// ...
ReactDOM.render(
<App />,
document.getElementById("root")
);
Спасибо, первое решение сработало для меня!