import { Routes, Route, Link, useNavigate, Outlet } from 'react-router-dom'
<Nav.Link onClick={() => {navigate("/");}}> 홈 </Nav.Link>
<Nav.Link onClick={() => {navigate("/detail");}}> 상세페이지 </Nav.Link>
<Route path="*" element={<div>없는 페이지 입니다.</div>} />
<Route path="*">
는 모든 경로를 뜻하기 때문에 우리가 만들어놓은 /detail 이런 경로가 아닌 이상한 페이지 접속 시 * 경로로 안내해준다.<Route path="/about/member" element={ <div>멤버들</div> } />
<Route path="/about/location" element={ <div>회사위치</div> } />
<Route path="/about" element={ <About/> } >
<Route path="member" element={ <div>멤버들</div> } />
<Route path="location" element={ <div>회사위치</div> } />
</Route>
<Route>
안에 <Route>
를 넣을 수 있는 것을 Nested routes 라고 한다.<div>
가 안보이는 이유<About>
안에 element 내용을 보여주는 것이다.<About>
컴포넌트 안에서 <div>
를 어디에 보여줄 지 표기해야 내용이 보인다.function About() {
return (
<div>
<h4>정보</h4>
<Outlet></Outlet>
</div>
);
}
<Outlet>
은 nested routes 안의 element들을 어디에 보여줄 지 표기하는 곳이다.: /event/one 페이지로 접속하면 하단처럼 생긴 페이지가 떠야 한다.
: /event/two 페이지로 접속하면 하단처럼 생긴 페이지가 떠야 한다.
<Route path="/event" element={<EventPage />}><Route>
function EventPage(){
return (
<div>
<h4>오늘의 이벤트</h4>
<Outlet></Outlet>
</div>
)
}
<Outlet>
으로 이벤트 내용이 들어갈 자리를 만들었다. <Route>
안에 <Route>
를 넣어 nested routes 를 이용해 이벤트 2개 경로와 element를 넣어주었다.<Routes>
<Route path="/event" element={<EventPage/>}>
<Route path="one" element={<div>첫 주문시 양배추즙 서비스</div>}></Route>
<Route path="two" element={<div>생일기념 쿠폰받기</div>}></Route>
</Route>
</Routes>
💡 useNavigate() : 페이지 이동기능을 한다.
💡 404페이지 : 유저가 이상한 경로로 접속했을 때 띄울 수 있는 페이지이다.
💡 nested routes : 서브경로를 만들 수 있다.
💡 outlet : nested routes 안의 element 들을 어디에 보여줄 지 표기하는 곳이다.
✍ 배운 내용들로만으로도 간단하게 숙제를 해결 할 수 있었다.