일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 차원 축소
- TooBigToInnovate
- 구글
- 머신러닝
- 대감집 체험기
- DBSCAN
- ADP 실기
- 클러스터링
- docker
- do it
- 빅쿼리
- 캐글
- 프론트엔드
- frontend
- 타입스크립트
- React
- 심층신경망
- 쿠버네티스
- 최적화
- Kaggle
- Machine Learning
- LDA
- 대감집
- 리액트
- Kubernetes
- ADP
- python
- r
- bigquery
- 파이썬
- Today
- Total
No Story, No Ecstasy
리액트를 다루는 기술 개정판 [리액트 라우터로 SPA 개발하기] 본문
13. 리액트 라우터로 SPA 개발하기
- SPA (Single Page Application)란?
. 기존에는 사용자에게 보이는 화면은 서버 측에서 준비했다.
. 리액트 같은 라이브러리를 사용하는 뷰 렌더링은 사용자의 브라우저가 화면 준비를 담당한다.
. 인터랙션이 발생하면 필요한 부분만 자바스크립트를 사용하여 업데이트한다. (서버 API로 필요한 데이터만 새로 불러옴)
. 라우팅(다른 주소에 다른 화면을 보여주는 것): react-router, reach-router, Next.js 등
- SPA의 단점
. 앱의 규모가 커지면 자바스크립트 파일이 너무 커진다.
. 그러나, 코드 스플리팅을 사용하면 라우트 별로 파일들을 나누어서 트래픽과 로딩 속도를 개선할 수 있다.
. 자바스크립트를 수행하지 않는 일반 크롤러의 검색 결과가 페이지에 잘 나타나지 않을 수 있다. -> 서버사이드 렌더링으로 해결
- 프로젝트 준비 및 기본적인 사용법
. 프로젝트 생성 및 라우터 적용 > 페이지 만들기 > Route 컴포넌트로 특정 주소에 컴포넌트 연결 > 라우트 이동하기
> URL 파라미터와 쿼리 이해하기 > 서브 라우트 > 부가 기능 알아보기
. react-router-dom 라이브러리를 설치한다.
$ yarn create react-app router-tutorial
$ cd router-tutorial
$ yarn add react-router-dom
- Route 컴포넌트로 특정 주소에 컴포넌트 연결
<Route path="주소 규칙" component={보여 줄 컴포넌트} />
. 규칙은 모든 component에 동일하게 적용된다.
. 개별 적용하려면 Route component 사용시 exact=true로 설정해야 한다.
- Link 컴포넌트를 사용하여 다른 주소로 이동하기
. 일반 웹 애플리케이션에서는 a 태그를 사용하여 페이지를 전환하지만, 리액트에서는 사용하면 안 된다.
. a 태그는 페이지 전환 과정에서 새로운 페이지를 불러오기 때문에 기존 상태들을 모두 날려 버린다. (전체 재 렌더링)
. Linke 컴포넌트는 App을 유지한 상태에서 HTML5 History API를 사용하여 페이지의 주소만 변경해준다.
<Link to="주소">내용</Link>
- Route 하나에 여러 개의 path 설정하기
. path props를 배열로 설정해 주면 여러 경로에서 같은 컴포넌트를 보여 줄 수 있다.
- URL 파라미터와 쿼리
. 페이지 주소를 정의할 때 유동적인 값을 전달해야 할때, 파라미터와 쿼리를 이용할 수 있다.
파라미터 예) /profile/velopert
쿼리 예) /about?details=trued
. URL 쿼리: location 객체에 들어 있는 search 값에서 쿼리를 조회할 수 있다. location 객체는 컴포넌트에게 props로 전달됨
- 서브 라우트
. 라우트 내부에 또 라우트를 정의하는 것
- 리액트 라우터 부가 기능
. history: 컴포넌트 내에 구현하는 메서드에서 라우터 API를 호출할 수 있다.
. 예) 뒤로 가거나, 로그인 후 화면을 전환하거나, 다른 페이지로 이탈하는 것을 방지할 때 사용
. withRouter: Higher-order Component (라우트로 사용된 컴포넌트가 아니어도 match, location, history 객체에 접근 가능)
. Switch: 여러 Route를 감싸서 그중 일치하는 단 하나의 라우트만을 렌더링시켜 준다. (Not Found도 구현 가능)
. NavLink: 현재 경로와 Link에서 사용하는 경로가 일치하는 경우 특정 스타일 혹은 CSS 클래스를 적용할 수 있는 컴포넌트
'Frontend Series' 카테고리의 다른 글
리액트를 다루는 기술 개정판 [Context API] (0) | 2021.04.24 |
---|---|
리액트를 다루는 기술 개정판 [외부 API를 연동하여 뉴스 뷰어 만들기] (0) | 2021.04.24 |
리액트를 다루는 기술 개정판 [IMMER 불변성 유지] (0) | 2021.04.22 |
리액트를 다루는 기술 개정판 [컴포넌트 성능 최적화] (0) | 2021.04.22 |
Do It! 타입스크립트 프로그래밍 [프로젝트 생성과 관리] (0) | 2021.04.18 |