开发者问题收集

错误:将你的 Route 组件包装在 Routes 组件中(在 react-router-dom 版本 5 和 6 之间切换)

2022-07-01
515

我正在做一个课程,其中使用了 react-router-dom 的第 5 版,其中 react-router-dom 发生了一些相当重大的变化。

当启动应用程序时,浏览器中出现一个白页,使用 devtools 我收到一条错误消息: 未捕获的错误: <Route> 只能用作 <Routes> 元素的子元素,从不直接呈现。请将您的 Route 包装在 Routes 中。

在我决定写这篇文章之前,我浏览了各种论坛,了解如何解决此错误,主要有两种解决方案:

  1. react-router-dom 的版本更改为旧版本(我不想使用此方法,我想解决问题)
  2. 按照错误消息的建议将 Route 包装在 Routes 中。这就是我所做的。但它没有用。

App.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: 无法读取未定义的属性(读取“路径名”)

2个回答

您将 browserrouter 作为 路由 ,然后导入低级 路由器 。您仍然缺少真实的 路由 组件包装路由。

修复导入,然后修复路由API/stantax。

示例:

523241346

您还可以查看 从V5上升> 其他破裂的迁移/升级指南从rrdv5到rrdv6。

Drew Reese
2022-07-01

Route 语法也已更改。现在它的工作方式如下: <Route path="/dashboard" element={<Dashboard/>} /> 。您可以在 文档

中查看更多内容
Otarius
2022-07-01