当在终端中运行npm run start时,我得到以下错误。

试图导入错误:'Redirect'没有从'react-router-dom'中导出。

我重新安装了node_modules, react-router-dom, react-router。还重新启动了终端和我的电脑,但问题仍然存在。

我的代码:

import React from 'react';
import { Switch, Redirect } from 'react-router-dom';

import { RouteWithLayout } from './components';
import { Minimal as MinimalLayout } from './layouts';

import {
  Login as LoginView,
  Dashboard as DashboardView,
  NotFound as NotFoundView
} from './views';

const Routes = () => {
  return (
    <Switch>
      <Redirect
        exact
        from="/"
        to="/dashboard"
      />
      <RouteWithLayout
        component={routeProps => <LoginView {...routeProps} data={data} />}
        exact
        layout={MinimalLayout}
        path="/login"
      />
      <Redirect to="/not-found" />
    </Switch>
  );
};

export default Routes;

这是我的包裹。json:进口

"react-router": "^6.0.0-beta.0",
"react-router-dom": "^6.0.0-beta.0",

当前回答

实际上,switch和redirect是react-router version 5和当前react-router version 6定义的路由器,所以这也不会是word 你使用版本5的交换机和重定向或路由器和版本6的to

其他回答

重定向组件已从react-router版本6中删除,对于react-router-dom v6,只需将重定向替换为导航

import { Navigate } from 'react-router-dom';

<Routes>
<Route path="/login" element={isLogin ? <Navigate to="/" /> : <Login />}/>
</Routes>

版本6。X你必须使用钩子useNavigate。

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

return (
            <Routes>
                <Route path='/products/:id' element={<Store/>} />

                 //replace Redirect with Navigate
                <Route path="*" element={<Navigate to ="/products" />}/>
            </Routes>

    );

对于react-router-dom v6,只需将Redirect替换为Navigate

import { Navigate } from 'react-router-dom';
.
.
.
{ component: () => <Navigate to="/404" /> }

实际上,switch和redirect是react-router version 5和当前react-router version 6定义的路由器,所以这也不会是word 你使用版本5的交换机和重定向或路由器和版本6的to