Front-end
[react] react-router-dom V6 Redirect
굿놈
2022. 2. 26. 16:08
v5에서 v6로 오면서 Redirect 역시 사라졌다.
따라서 이를 대체하기 위해 <Navigate replace to="" />을 사용할 수 있다.
코드 설명: islogin 변수가 true이면 Home page로 redirect하게 해주었다.
기존 방식
import { BrowserRouter, Navigate, Route, Routes } from "react-router-dom";
import Links from "./components/Links";
import NavLinks from "./components/NavLinks";
import About from "./pages/About";
import Home from "./pages/Home";
import NotFound from "./pages/NotFound";
import Profile from "./pages/Profile";
import Login from "./pages/Login";
const islogin = true;
function App() {
return (
<BrowserRouter>
<Links />
<NavLinks />
<Routes>
<Route
path="/login"
render={() => (islogin ? <Redirect to="/" /> : <Login />)}
/>
<Route path="/profile/:id" element={<Profile />} />
<Route path="/profile" element={<Profile />} />
<Route path="/about" element={<About />} />
<Route path="/" element={<Home />} />
<Route path="/*" element={<NotFound />} />
</Routes>
</BrowserRouter>
);
}
export default App;
V6 방식
import { BrowserRouter, Navigate, Route, Routes } from "react-router-dom";
import Links from "./components/Links";
import NavLinks from "./components/NavLinks";
import About from "./pages/About";
import Home from "./pages/Home";
import NotFound from "./pages/NotFound";
import Profile from "./pages/Profile";
import Login from "./pages/Login";
const islogin = true;
function App() {
return (
<BrowserRouter>
<Links />
<NavLinks />
<Routes>
<Route
path="/login"
element={islogin ? <Navigate replace to="/" /> : <Login />}
/>
<Route path="/profile/:id" element={<Profile />} />
<Route path="/profile" element={<Profile />} />
<Route path="/about" element={<About />} />
<Route path="/" element={<Home />} />
<Route path="/*" element={<NotFound />} />
</Routes>
</BrowserRouter>
);
}
export default App;