작성
·
235
0
안녕하세요 react router-dom 실습 중 문의드립니다
수업중 src의 index에서 pages의 index는 라우트가되는데
pages의 index에서 accounts의 index는 라우트가안되네요..
http://localhost:3000/accounts/signup 의 주소로 들어가고싶은데
틀린부분을 못찾겠고 기존 질의를 봐도 해결이 잘안되서 질문드립니다
pages의 index.js 코드는 아래와같습니다
import React from "react";
import AppLayout from "components/AppLayout";
import {
//BrowserRouter as Router,
//Switch,
Route,
Routes
} from "react-router-dom";
import About from "./About";
import Home from "./Home";
import AccountsRoutes from "./accounts";
function Root() {
return (
<AppLayout>
<Routes>
<Route exact path ="/" element={<Home/>} />
<Route exact path ="/about" element={<About/>} />
<Route path="/accounts" element={<AccountsRoutes/>} />
</Routes>
</AppLayout>
);
}
export default Root;
pages/accounts 의 index.js 코드는 아래와같습니다
import React from "react";
import { Route, Routes} from "react-router-dom";
import Profile from "./Profile";
import Login from "./Login";
import Signup from "./Signup";
function AccountsRoutes({match}){
return (
<>
<Routes>
<Route exact path={match.url+ "/profile"} element={<Profile/>} />
<Route exact path={match.url+ "/login"} element={<Login/>} />
<Route exact path={match.url+ "/signup"} element={<Signup/>} />
</Routes>
</>
);
}
export default AccountsRoutes;
답변 2
3
안녕하세요.
사용하시는 react-router-dom 버전이 어떻게 되시나요? Routes를 쓰신 것을 보니 @6을 쓰신 듯 합니다.
@6에서는 더 이상 exact가 사용되지 않고, 디폴트로 exact 동작이며 path 끝에 /* 를 붙이면 여러 주소를 처리토록 되었습니다. 그리고 속성값으로 match 가 전달되지 않구요.
그러니 AccountsRoutes 컴포넌트에서는 다음과 같이 쓰시게 되겠구요.
<Route path="profile" element={<Profile/>} />
<Route path="login" element={<Login/>} />
<Route path="signup" element={<Signup/>} />
Root 컴포넌트에서는 다음과 같이 쓰시면 예상하신 대로 동작할 것입니다.
<Route path="/accounts/*" element={<AccountsRoutes/>} />
살펴보시고, 댓글 남겨주세요.
화이팅입니다. :-)
1