我不知道为什么我得到这个错误,我在任何地方都找不到答案。我已经卸载了react-router-dom包并重新安装了它,但它仍然告诉我交换模块没有从react-router-dom导出。这是我的代码。

我得到的错误是:

试图导入错误:“Switch”没有从“react-router-dom”中导出。

Code

import React from 'react';
import './App.css';
import NavBar from './components/navbar.js';
import Footer from './components/footer.js';
import Home from './components/pages/homepage/home.js';
import { BrowserRouter as Router, Switch, Route, Link } from 'react-router-dom';

function App() {
  return (
    <Router>
      <div className="app-container">
        <NavBar />
        <Switch>
          <Route path="/home" component={Home} />
        </Switch>
        <Footer />
      </div>
    </Router>
  );
}

export default App;

当前回答

我可以通过将Switch更改为Routes来修复它。 所以你应该有这样的东西:

<Routes>
  <Route path='/home' element={<Home/>} />
</Routes>

你还需要把import从Switch改成Routes:

import { Routes, Route } from "react-router-dom";

其他回答

这实际上不是你或React或你的代码的问题。它只是react-router-dom的更新版本。用路由替换交换机。

就是这样。只要使用路由而不是开关,它工作得很好。

我和杂志海报上的人面临着同样的问题。我尝试了以下所有的方法:

卸载并安装react-router-dom 分别从react-router-dom导入Switch

但对我来说什么都没用。

请遵循以下指示。我相信你不会再得到错误。

正确的代码:

import React from "react";
import "./App.css";
import NavBar from "./components/navbar.js";
import Footer from "./components/footer.js";
import Home from "./components/pages/homepage/home.js";
import { BrowserRouter as Router, Routes, Route, Link } from "react-router-dom";

function App() {
  return (
    <Router>
      <div className="app-container">
        <NavBar />
        <Routes>
          <Route path="/home" element={<Home/>} />
        </Routes>
        <Footer />
      </div>
    </Router>
  );
}

export default App;

注意:Switch已经被替换为Routes,我们需要使用element而不是component。

在安装react-router-dom v6.0.2后,我得到了这个错误。

用路由替换交换机解决了这个问题:

import {BrowserRouter as Router, Route, Routes} from "react-router-dom";

写入<路由>而不是<交换机>。

在终端中运行:

npm install --save react-router react-router-dom

这对我很有帮助。或检查文件包。在“react-dom”后面添加以下内容:“^17.0.2”,

 "react-router": "^6.0.0",
import React from "react";
import { Link, BrowserRouter as Router, Route, Routes } from "react-router-dom";
import "./App.css";
import App from "./App";
const RouterPage = () => {
    return (
        <Router>
            <div>
                <nav>
                    <Link to="/">Home</Link>
                    <Link to="/posts">Posts</Link>
                    <Link to="/">About</Link>
                    <Link to="/contact">Contact</Link>
                </nav>
                <Routes>
                    <Route exact path="/" element={<App />}></Route>
                    <Route path="/post" element={<App />} />
                    <Route path="/about" element={<App />} />
                    <Route path="/contact" element={<App />} />
                </Routes>
            </div>
        </Router>
    );
};

你应该把Switch换成Routes