React
[Redirect, useHistory] 리액트 v6에서 없어졌다.
Judith Hopps
2022. 9. 22. 21:12
반응형
[클론코딩 트위터] 104p 코드이다.
// import { useState } from "react";
import { HashRouter as Router,Redirect, Route, Routes } from "react-router-dom";
import Auth from "routes/Auth";
import Home from "routes/Home";
import Profile from "routes/Profile"
import Navigation from "./Navigation";
const AppRouter = ({isLoggedIn}) => {
// const [isLoggedIn, setIsLoggedIn] = useState(true);
return (
<Router>
{isLoggedIn && <Navigation/>}
<Routes>
{isLoggedIn ? (
<>
<Route path="/" element={<Home />} />
<Route path="/profile" element={<Profile />} />
</>
) : (
<Route path="/" element={<Auth/>} />
)}
<Redirect from ="*" to="/" />
</Routes>
</Router>
);
};
export default AppRouter;
문제점 :
위 코드를 실행하면 Attempted import error: 'Redirect' is not exported from 'react-router-dom' (imported as 'Redirect').
ERROR in ./src/components/Router.js 59:37-45 이라는 에러 메세지가 뜬다.
ERROR in ./src/components/Router.js 59:37-45 이라는 에러 메세지가 뜬다.
또한 107p에서도 useHistory를 사용하는데 같은 에러 메세지가 뜬다.
이유 :
리액트 v6부터 <Redirect />, useHistory는 사라졌다.
Redirect가 사라지고 Routes안에는 Route만 사용한다.
useHistory가 사라지고 useNavigate를 사용한다.
수정 코드 :
Router.js 파일
// import { useState } from "react";
import { HashRouter as Router, Route, Routes } from "react-router-dom";
import Auth from "routes/Auth";
import Home from "routes/Home";
import Profile from "routes/Profile"
import Navigation from "./Navigation";
const AppRouter = ({isLoggedIn}) => {
// const [isLoggedIn, setIsLoggedIn] = useState(true);
return (
<Router>
{isLoggedIn && <Navigation/>}
<Routes>
{isLoggedIn ? (
<>
<Route path="/" element={<Home />} />
<Route path="/profile" element={<Profile />} />
</>
) : (
<Route path="/" element={<Auth/>} />
)}
</Routes>
</Router>
);
};
export default AppRouter;
Profile.js 코드
// import { useState } from "react";
import { HashRouter as Router, Route, Routes } from "react-router-dom";
import Auth from "routes/Auth";
import Home from "routes/Home";
import Profile from "routes/Profile"
import Navigation from "./Navigation";
const AppRouter = ({isLoggedIn}) => {
// const [isLoggedIn, setIsLoggedIn] = useState(true);
return (
<Router>
{isLoggedIn && <Navigation/>}
<Routes>
{isLoggedIn ? (
<>
<Route path="/" element={<Home />} />
<Route path="/profile" element={<Profile />} />
</>
) : (
<Route path="/" element={<Auth/>} />
)}
</Routes>
</Router>
);
};
export default AppRouter;
파일을 위와 같이 수정하면 로그아웃 버튼을 클릭하면 url이 /로 이동하는 것을 볼 수 있다.
반응형