Routing
- react-router-dom 설치
- npm i react-router-dom
- npm i -D @types/react-router-dom
- react-router-dom
- 라우터 타입(최상위)
- BrowserRouter
- HashRouter
- MemoryRouter
- 페이지 라우팅
- Routes > Route
- Routes는 여러 개 둘 수 있다.
- 라우터 타입(최상위)
- React Router (Navigate & useNavigate)
- import
- import { Navigate, useNavigate } from 'react-router-dom';
- 페이지 강제 이동 (forward/redirect)
- <Navigate to='<path>' state={} />
- <Route path='/old-path' element={<Navigate to='/new-path'/>} />
- import
- React Router (Nav)
- Link (페이지 링크)
- <Link to='/items' [replace | reloadDocument] />
- NavLink
- isActive callback 함수 제공 (children, className, style)
- Link (페이지 링크)
- NavLink Styling
- styled-component & emotion
- active 처리
- Route의 path와 NavLink의 to가 일치하면 active 클래스를 자동으로 넣어준다.
- active 처리
- classnames
- Modue CSS + classnames 로 처리
- Module CSS로 클래스 중복 막고, isActive 처리는 classnames로 처리
- Modue CSS + classnames 로 처리
- clsx
- active 처리
- css 파일에서 active 클래스 설정
- 가장 단단 (클래스 중복은 상위 클래스로 설정)
- active 처리
- styled-component & emotion
- Router Hooks
- useOutletContext
- <Outlet context={{name: 'Hong'}} />
- const outctx = useOutletContext<{ name: string}>();
- useLocation & useParams
- <Route path='/items/:id' element={<Item />}>
- const { id } = useParams();
- const location = useLocation();
- const state = location.state as { x: number };
- useSearchParams
- const [searchParams, setSearchParams] = useSearchParams({});
- useOutletContext
- Layout
- 하위 Route의 페이지 레이아웃 잡기
- <Route path='/' element={<Compo />} />
- <Route path='/items/:id' element={<Item />} />
- 하위 Route의 페이지 레이아웃 잡기
'Front-end > React' 카테고리의 다른 글
[React] React 작업 환경 설정 및 프로젝트 생성 (0) | 2024.03.09 |
---|---|
[React] Storybook 사용 (0) | 2024.02.29 |
[React] Component Styling (0) | 2024.02.29 |
[React] React Hooks - browser storage (local storage, session storage) (0) | 2024.02.29 |
[React] React Hooks - useDeferredValue, useTransition (0) | 2024.02.29 |