首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React:“重定向”不是从“react路由器-dom”导出的。

问React:“重定向”不是从“react路由器-dom”导出的。
EN

Stack Overflow用户
提问于 2020-09-01 15:23:37
回答 13查看 192.8K关注 0票数 189

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

尝试导入错误:“重定向”不是从“react router”导出的。

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

我的代码:

代码语言:javascript
复制
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;

以下是我的package.json导入:

代码语言:javascript
复制
"react-router": "^6.0.0-beta.0",
"react-router-dom": "^6.0.0-beta.0",
EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2021-10-01 15:02:22

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

代码语言:javascript
复制
import { Navigate } from 'react-router-dom';
.
.
.
{ component: () => <Navigate to="/404" /> }
票数 287
EN

Stack Overflow用户

发布于 2021-12-29 05:34:45

重定向已从v6中删除。可以将重定向替换为导航。

代码语言:javascript
复制
import {
  BrowserRouter as Router,
  Routes,
  Route,
  Navigate,
} from 'react-router-dom';
import Home from '../home/Home';

export default function App() {
  return (
    <Router>
      <Routes>
        <Route path="/home" element={<Home />} />
        <Route path="/" element={<Navigate replace to="/home" />} />
      </Routes>
    </Router>
  );
}
票数 79
EN

Stack Overflow用户

发布于 2020-09-01 15:50:49

Redirect组件已从react-router版本6中删除。

来自响应路由器文档:

不再支持来自v5的v5元素作为路由配置的一部分(在这是由于即将发生的React更改,使得在初始呈现期间更改路由器的状态是不安全的。如果需要立即重定向,可以在服务器上(可能是最好的解决方案)或b)在路由组件中呈现<Navigate>元素。但是,要认识到导航将发生在useEffect中。

如果您想使用Redirect组件,则必须使用react路由器版本5。

或者,您可以使用来自react路由器v6的导航组件。<Navigate>元素在呈现时更改当前位置。

代码语言:javascript
复制
import { Navigate } from "react-router-dom";

return (
  <Navigate to="/dashboard" replace={true} />
)

注意:Navigate是围绕useNavigate钩子的组件包装器。您可以使用此钩子以编程方式更改路由。

票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63690695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档