대응: '리다이렉트'는 'react-router-dom'에서 내보내지 않습니다.
행음 i i i 、 음음 、 류 i 、 i i 、 。npm run start
터미널에 있습니다.
Import 시도 오류: '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;
제 사진이 .package.json
Import:
"react-router": "^6.0.0-beta.0",
"react-router-dom": "^6.0.0-beta.0",
★★★의 react-router-dom
v6, "v6"을 바꿉니다.Redirect
Navigate
import { Navigate } from 'react-router-dom';
.
.
.
{ component: () => <Navigate to="/404" /> }
리다이렉트가 v6에서 삭제되었습니다.[ Redirect ]를 [Navigate]으로 대체할 수 있습니다.
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>
);
}
Redirect
되었습니다.react-router
§ 6
<Redirect>
로서 서포트되지 않게 ( v5 의 경우( 「」)는 없습니다.이는 Respect가 변경됨에 따라 초기 렌더링 중에 라우터 상태를 변경할 수 없게 되었기 때문입니다. 할 a)도 있고이 있다), b) 렌더링을 할 수도 .<Navigate>
루트 컴포넌트에 포함되어 있습니다.은 ,, 비, 비, 비, 비, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,useEffect
.
「 」를 사용하고 Redirect
51을 .
또는 리액트 라우터 v6에서 Navigate 컴포넌트를 사용할 수도 있습니다.a<Navigate>
됩니다.
import { Navigate } from "react-router-dom";
return (
<Navigate to="/dashboard" replace={true} />
)
★★★★★★Navigate
useNavigate 훅을 둘러싼 컴포넌트 래퍼입니다.이 후크를 사용하여 루트를 프로그래밍 방식으로 변경할 수 있습니다.
리다이렉트는 v6에서 삭제되었지만 지금 바로 수행할 수 있습니다.
<Route path="*" element={<Navigate to ="/" />}/>
하면 안 요.Redirect
되어 .react-router-dom
§ 6
하시면 됩니다.react-router-dom
.22. 4.2.2.을 사용하다
npm install --save react-router-dom@4.2.2
또는
yarn add react-router-dom@4.2.2
리액트 라우터 버전 6에서 리다이렉트 구성 요소가 제거되었습니다. 리액트 라우터-dom v6의 경우 리다이렉트를 탐색으로 바꾸면 됩니다.
import { Navigate } from 'react-router-dom';
<Routes>
<Route path="/login" element={isLogin ? <Navigate to="/" /> : <Login />}/>
</Routes>
Redirect
Navigate
될 될 거예요.
<Route path='/' exact>
<Navigate to={`/documents/${uuidV4()}`} />
</Route>
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>
);
안녕하세요, useHistory라는 훅이 있었던 것을 기억합니다.이 훅은 아직 존재합니다.이 훅은 몇 가지 변경 사항만 있어 useNavigate로 이름이 변경되었습니다.이것을 사용하고, 문서의 몇개의 예를 따라서, 보호되고 있는 루트에 대해서 다음의 재작업을 실시했습니다.
import { useEffect, useState } from "react";
import { useNavigate } from "react-router-dom";
import { useAuth } from "../../contexts/AuthContext";
function ProtectedRoutes({ component: Component }, props) {
const [loading, setLoading] = useState(true);
const { currentUser } = useAuth();
const navigate = useNavigate();
useEffect(() => {
if (currentUser) {
setLoading(false);
return;
}
navigate("/");
}, []);
return <>{loading ? "Loading..." : <Component {...props} />} </>;
}
export default ProtectedRoutes;
My Routes에서는 다음과 같이 사용됩니다.
import { BrowserRouter as Router, Route, Routes } from "react-router-dom";
import AuthFirebaseHelper from "./helpers/AuthFirebaseHelper/AuthFirebaseHelper";
import ProtectedRoutes from "./helpers/ProtectedRoutes/ProtectedRoutes";
import Dashboard from "./components/Dashboard";
import Home from "./components/Home";
function App() {
return (
<Router>
<Routes>
<Route path="/authentication" element={<AuthFirebaseHelper />}></Route>
<Route path="/" exact element={<Home />}></Route>
<Route
path="/restricted"
element={<ProtectedRoutes component={Dashboard} />}
></Route>
</Routes>
</Router>
);
}
기본 앱 내보내기;
사용 설명서내비게이션
에서 되어 있기 v6
대체 수단으로 사용할 수 있습니다.
<Route path="*" element={<NotFound />} />
react-router-dom 버전 5.x.x >6 에서는 를 사용할 수 있습니다.<Redirect />
import { Redirect } from 'react-router-dom';
{ component: () => <Redirect to="/dashboard" /> }
react-router-dom 버전 5.x.x < 6 에서는 를 사용할 수 있습니다.<Navigate />
import { Navigate } from 'react-router-dom';
{ component: () => <Navigate to="/dashboard" /> }
실제로 스위치와 리다이렉트는 jn 리액트라우터 버전5 및 현재 리액트라우터 버전6으로 정의되어 있습니다.따라서 스위치와 리다이렉트 또는 라우터와 함께 버전5를 사용했다고 하는 것은 아닙니다.
언급URL : https://stackoverflow.com/questions/63690695/react-redirect-is-not-exported-from-react-router-dom
'source' 카테고리의 다른 글
Mongoid 설치 후 Active Record 생성기를 사용하시겠습니까? (0) | 2023.02.16 |
---|---|
라벨의 Angular.js ng-click 이벤트가 두 번 발생합니다. (0) | 2023.02.16 |
중첩된 JSON 객체의 내부 필드를 해석하는 방법 (0) | 2023.02.16 |
connectedRouter 오류: 상태 트리에서 라우터 리듀서를 찾을 수 없습니다. "router" 아래에 마운트해야 합니다. (0) | 2023.02.16 |
잭슨 json을 사용하여 역직렬화를 위해 열거형 필드에 주석을 다는 방법 (0) | 2023.02.16 |