[英]Error: wrap your Route components in a Routes component (change between versions 5 and 6 of react-router-dom)
我正在做一門課程,其中使用 react-router-dom 的第 5 版,其中react-router-dom
react-router-dom
了一些非常重大的變化。
當啟動應用程序時,瀏覽器中會出現一個白頁,使用 devtools 我收到一條錯誤消息:未捕獲錯誤: <Route>
只能用作<Routes>
元素的子元素,從不直接呈現。 請將您的路線包裝在路線中。
在我決定寫這篇文章之前,我瀏覽了各種論壇關於如何解決這個錯誤,兩個主要的解決方案如下:
react-router-dom
的版本更改為舊版本(我不想使用這種方法,我想解決問題)Route
包裝在Routes
中。 這就是我所做的。 但它沒有用。應用程序.js
import "./App.css";
import Dashboard from "./components/Dashboard";
import Header from "./components/Layout/Header";
import "bootstrap/dist/css/bootstrap.min.css";
import { BrowserRouter as Routes, Router, Route } from "react-router-dom";
import AddProject from "./components/Project/AddProject";
import { Component } from "react";
class App extends Component {
render() {
return (
<Router>
<div className="App">
<Header />
<Routes>
<Route exact path="/dashboard" component={Dashboard} />
<Route exact path="/addProject" component={AddProject} />
</Routes>
</div>
</Router>
);
}
}
export default App;
我更改了向其添加Routes
的導入。 我將Route
包裹在Routes
中。 但它不斷收到同樣的錯誤。
我不知道我是否應該刪除Router
,但如果我這樣做,它會收到錯誤: Uncaught TypeError: Cannot read properties of undefined (reading 'pathname')
Route
語法也發生了變化。 現在它是這樣工作的: <Route path="/dashboard" element={<Dashboard/>} />
。 您可以在文檔中查看更多信息
您將BrowserRouter
導入為Routes
,然后導入低級Router
。 您仍然缺少包裝路線的真正Routes
組件。
修復導入,然后修復路由 API/語法。
例子:
import {
BrowserRouter as Router, // <-- this is the router
Routes, // <-- this is the Routes
Route
} from "react-router-dom";
import AddProject from "./components/Project/AddProject";
import { Component } from "react";
class App extends Component {
render() {
return (
<Router>
<div className="App">
<Header />
<Routes>
<Route
path="/dashboard"
element={<Dashboard />} // <-- element prop takes ReactNode/JSX
/>
<Route
path="/addProject"
element={<AddProject />} // <-- element prop takes ReactNode/JSX
/>
</Routes>
</div>
</Router>
);
}
}
您還可以查看從 v5遷移/升級指南升級以了解從 RRDv5 到 RRDv6 的其他重大更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.