我不知道为什么我得到这个错误,我在任何地方都找不到答案。我已经卸载了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;

当前回答

在react-router-dom v6中,Switch被替换为路由。

还有组件和元素

{componentName}和{}

其他回答

react-router-dom包最近发生了突破性的变化。React Router v6 Changelog永久链接

所以你所需要的就是重命名导入,就像这样…

import { Routes as Switch, Route } from 'react-router-dom';

干杯!

Switch已被Routes替换。

更新路由(react-router-dom语法)#1386 (howtographql GitHub)

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

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

在React路由器v6中,我们必须将组件替换为。 通过执行npm install react-router-dom@latest命令,确保你的项目运行的是最新版本。 如果你不想更新你的代码,你可以在你的项目根目录下运行npm install react-router-dom@5.2.0来安装react-router-dom的v5版本。

如果你有任何困惑,请观看这个视频寻求帮助:https://www.youtube.com/watch?v=8BVMPyQA7d4

我也遇到了同样的问题,我在网上搜索了很多,但是我没有根据我的问题得到任何答案。

所以我卸载了react-router-dom的6版:

npm uninstall react-router-dom

并安装了react-router-dom 5.2.0版本:

npm install react-router-dom@5.2.0