리액트 & 리액트 네이티브 통합 교과서 [웹과 네이티브 모바일 개발을 위한 실전 활용법]
- 원서명React and React Native: Use React and React Native to build applications for desktop browsers, mobile browsers, and even as native mobile apps (ISBN 9781786465658)
- 지은이아담 보두치(Adam Boduch)
- 옮긴이강경일, 신희철
- ISBN : 9791161753195
- 35,000원
- 2019년 07월 22일 펴냄 (절판)
- 페이퍼백 | 588쪽 | 188*235mm
- 시리즈 : acorn+PACKT, 프로그래밍 언어
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
요약
리액트에서 리액트 네이티브로 이어지는 실전 활용법!
리액트는 페이스북이 개발한 웹 개발 라이브러리로, 현재 페이스북이 자사 서비스에 적극적으로 활용할 뿐만 아니라 수많은 개발자들이 웹 및 앱 개발에 사용하고 있는 기술이다.
이 책은 리액트에 대한 전반적인 이해와 구현을 통해 모바일 앱 개발이 가능한 리액트 네이티브를 소개하며 약간의 자바스크립트 지식으로도 충분히 시작할 수 있다.
먼저 리액트의 개념 및 렌더링, 컴포넌트 재사용, JSX, 고차 컴포넌트 등에 대해 배운다. 책 후반부에서는 이를 토대로 모바일 앱 개발을 위해 리액트 네이티브로 주요 모바일 플랫폼의 네이티브 컴포넌트와 연동하는 방법을 배운다.
이 책에서 다루는 내용
■ 재사용 가능한 리액트 컴포넌트 작성하기
■ 리액트 라우터로 UI와 URL을 동기화해 탐색 통제하기
■ Node.js를 사용해 서버 사이드 렌더링 웹 애플리케이션 개발하기
■ 반응형 모바일 디자인을 생성하기 위해 플럭스박스 레이아웃 모델 사용하기
■ 안드로이드와 iOS 네이티브 API를 활용해 리액트 네이티브로 매력적인 애플리케이션 개발하기
■ 사용자를 위해 직관적인 형태의 제스처에 대응하기
■ 리액트 UI를 위한 통합된 데이터 아키텍처를 구성하기 위해 릴레이 사용하기
이 책의 대상 독자
입문자나 전문가를 포함한 모든 자바스크립트 개발자를 위해 만들어졌다. 페이스북의 UI 라이브러리 사용법을 배우고 싶은 사람도 포함된다. 리액트에 대한 지식은 필요 없지만 ES2015에 대한 실무 지식이 있으면 더욱 잘 이해할 수 있다.
이 책의 구성
1장, ‘왜 리액트인가?’에서는 리액트가 무엇인지, 왜 사용하고 싶은지에 대해 알아본다.
2장, ‘JSX 렌더링’에서는 JSX가 리액트에서 콘텐트를 렌더링할 때 사용하는 구문이라는 것에 대해 알아본다. HTML이 가장 보편적인 결과지만 JSX를 사용하면 네이티브 UI 컴포넌트 등을 렌더링할 수 있다.
3장, ‘컴포넌트 프로퍼티, 상태 그리고 컨텍스트’에서는 프로퍼티가 컴포넌트에 전달되는 방법과 상태가 변경될 때 컴포넌트를 재렌더링하는 방법에 대해 알아본다.
4장, ‘이벤트 핸들링–리액트 방식’에서는 리액트의 이벤트가 JSX에서 구체화된다는 것과 리액트가 이벤트를 어떻게 처리하고 코드가 해당 이벤트에 어떻게 반응해야 하는지에 대해 알아본다.
5장, ‘재사용할 수 있는 컴포넌트 제작’에서는 컴포넌트가 종종 더 작은 컴포넌트들을 사용해 구성된다는 것에 대해 알아본다. 이는 데이터 및 동작을 하위 컴포넌트에 올바르게 전달해야 한다는 것을 의미한다.
6장, ‘리액트 컴포넌트 생명주기’에서는 리액트 컴포넌트가 어떻게 만들어지고 파괴되는지에 대해 알아본다. 이에는 네트워크에서 데이터를 가져오는 것과 같은 여러 다른 생명주기(Lifecycle) 이벤트가 있다.
7장, ‘컴포넌트 프로퍼티 검증’에서는 리액트에 컴포넌트로 전달되는 프로퍼티 유형의 유효성을 검사하는 메커니즘이 있다는 것을 알아본다. 이를 통해 컴포넌트에 예기치 못한 값이 전달되지 않는다는 사실을 확인할 수 있다.
8장, ‘컴포넌트 확장’에서는 컴포넌트를 확장하는 데 사용되는 메커니즘에 대해 소개한다. 이는 상속과 고차 컴포넌트(higher-order components)를 포함한다.
9장, ‘라우트를 통한 내비게이션 처리’에서는 내비게이션이 모든 웹 애플리케이션의 본질적인 부분이라는 것에 대해 알아본다. 리액트는 리액트 라우터 패키지(react-router package)를 사용해 라우트를 선언적으로 처리한다.
10장, ‘서버단 리액트 컴포넌트’는 브라우저에서 리액트가 컴포넌트를 DOM에 렌더링하는 방법을 논의한다. 또한 컴포넌트를 문자열로 렌더링할 수도 있는데 이는 서버에서 페이지를 렌더링하고 브라우저에 정적 콘텐트를 전달할 때 유용하다.
11장, ‘모바일 우선 리액트 컴포넌트’에서는 모바일 웹 애플리케이션은 데스크톱 화면 해상도를 위해 설계된 웹 애플리케이션과는 근본적으로 다르다는 것에 대해 알아본다. 리액트 부트스트랩 패키지(react-bootstrap package)를 사용하면 UI를 모바일 환경에서 만들 수 있다.
12장, ‘왜 리액트 네이티브인가?’에서는 리액트 네이티브가 모바일을 위한 리액트라는 것에 대해 알아본다. 리액트에 대한 경험이 있다면 똑같은 기술을 통해 향상된 모바일 경험을 제공할 수 있다.
13장, ‘리액트 네이티브 프로젝트 시작하기’에서는 어느 누구도 보일러플레이트 코드 작성이나 프로젝트 디렉터리 설정을 좋아하지 않는다는 것에 대해 알아본다. 리액트 네이티브에는 이러한 작업을 자동화하는 도구가 존재한다.
14장, ‘플렉스박스로 반응형 레이아웃 만들기’에서는 플렉스박스(Flexbox) 레이아웃 모델이 CSS를 사용하는 웹 UI 레이아웃에서 인기 있는 이유를 알아본다. 리액트 네이티브는 레이아웃 화면과 동일한 메커니즘을 사용한다.
15장, ‘화면 탐색하기’에서는 탐색은 웹 애플리케이션의 중요한 부분이지만 모바일 애플리케이션은 사용자가 화면에서 화면으로 이동하는 방식을 처리하는 도구가 필요하다는 것에 대해 알아본다.
16장, ‘항목 목록 렌더링하기’에서는 리액트 네이티브에서는 항목 목록을 완벽하게 렌더링해주는 목록 뷰 컴포넌트가 있다는 것에 대해 알아본다. 단순히 데이터 소스를 제공하면 나머지는 알아서 처리한다.
17장, ‘프로그레스 보여주기’에서는 프로그레스 바가 일의 진행률을 보여주는 데 매우 훌륭하다는 것에 대해 알아본다. 얼마나 걸리는지 모를 경우 프로그레스 인디케이터를 사용하라. 리액트 네이티브에는 두 가지 컴포넌트가 모두 있다.
18장, ‘지오로케이션과 맵’에서는 react-native-maps 패키지가 리액트 네이티브에 매핑 기능을 제공하는 것에 대해 일아본다. 웹 애플리케이션에서 사용되는 지오로케이션 API는 리액트 네이티브에서 직접 제공된다.
19장, ‘사용자 입력받기’에서는 대부분의 애플리케이션이 사용자로부터 입력을 받아야 한다는 것에 대해 알아본다. 이는 모바일 애플리케이션에서도 다르지 않으며 리액트 네이티브는 HTML 폼 요소들과 같은 다양한 제어 기능을 제공한다.
20장, ‘알림, 통지, 확인’에서는 알림(Alert)은 사용자에게 중요한 일이 발생했다는 것, 통지(Notification)는 눈에 띄지 않는 업데이트라는 것, 확인(Confirmation)은 즉각적인 응답을 얻는 데 사용된다는 것에 대해 알아본다.
21장, ‘사용자 제스처에 대응하기’에서는 모바일 장치에서의 제스처가 브라우저에서 올바르게 동작하기 어렵다는 것에 대해 알아본다. 이와 반대로 네이티브 앱은 스와이프, 터치 등에 대해 훨씬 더 나은 경험을 제공할 수 있다. 리액트 네이티브는 많은 세부 사항을 처리한다.
22장, ‘이미지 출력 제어하기’에서는 이미지가 아이콘, 로고 또는 사물의 사진이 대부분의 애플리케이션에서 얼마나 중요한 역할을 하는지에 대해 알아본다. 리액트 네이티브는 이미지 로드, 사이즈 조정 및 적절하게 배치하기 위한 도구를 제공한다.
23장, ‘오프라인의 세계로’에서는 모바일 장치의 네트워크 연결이 불안정한 경향이 있다는 것에 대해 알아본다. 따라서 모바일 앱은 임시 오프라인 상태를 처리할 수 있어야 한다. 이를 위해 리액트 네이티브에는 로컬 스토리가 API가 있다.
24장, ‘애플리케이션 상태 다루기’에서는 애플리케이션 상태가 웹이나 모바일을 포함한 모든 리액트 애플리케이션에서 얼마나 중요한지에 대해 알아본다. 이것이 바로 리덕스 및 Immutable.js와 같은 라이브러리를 이해하는 것이 중요한 이유다.
25장, ‘왜 릴레이 및 그래프QL인가?’에서는 릴레이와 그래프QL을 함께 사용해 대규모 상태를 처리하는 새로운 접근법에 대해 알아본다. 이는 질의 및 변형 언어이며 리액트 컴포넌트를 감싸는 라이브러리다.
26장, ‘릴레이 리액트 앱 구현하기’에서는 릴레이와 그래프QL의 진정한 이점은 상태 스키마가 웹과 네이티브 버전의 애플리케이션 간에 공유된다는 것에 있다는 점을 알아본다.
목차
목차
- 1장. 왜 리액트인가?
- 리액트란?
- 리액트는 단지 뷰다
- 단순성이 좋다
- 선언적 UI 구조
- 시간과 데이터
- 성능 문제
- 올바른 추상화 수준
- 리액트 16의 변경 사항
- 핵심 아키텍처 개선
- 생명주기 메서드
- 컨텍스트 API
- 프래그먼트 렌더링
- 목록과 문자열을 렌더링
- 요약
- 리액트란?
- 2장. JSX 렌더링
- JSX란 무엇인가?
- Hello JSX
- 선언적 UI 구조
- HTML과 같은
- 내장 HTML 태그
- HTML 태그 규약
- UI 구조 설명
- 자신의 JSX 요소 생성
- HTML 캡슐화
- 중첩 요소
- 네임스페이스 컴포넌트
- 자바스크립트 표현 사용
- 동적 프로퍼티 값과 텍스트
- 컬렉션을 요소에 매핑
- JSX의 프래그먼트
- 래퍼 요소
- 프래그먼트를 사용해 불필요한 태그 제거
- 요약
- JSX란 무엇인가?
- 3장. 컴포넌트 프로퍼티, 상태 그리고 컨텍스트
- 컴포넌트 상태란 무엇인가?
- 컴포넌트 프로퍼티란 무엇인가?
- 컴포넌트 상태 설정
- 초기 컴포넌트 상태
- 컴포넌트 상태 설정
- 컴포넌트 상태 병합
- 프로퍼티 값 전달하기
- 기본 프로퍼티 값
- 프로퍼티 값 설정
- 무상태 컴포넌트
- 순수 함수형 컴포넌트
- 함수형 컴포넌트 기본값
- 컨테이너 컴포넌트
- 컨텍스트 제공 및 사용
- 요약
- 4장. 이벤트 핸들링 - 리액트 방식
- 이벤트 핸들러 선언
- 핸들러 함수 선언
- 다중 이벤트 핸들러
- 제네릭 핸들러 임포트
- 이벤트 핸들러 컨텍스트와 매개변수
- Auto-binding context
- 컴포넌트 데이터 가져오기
- 고차 이벤트 핸들러
- 인라인 이벤트 핸들러
- 요소에 핸들러를 바인딩
- 통합 이벤트 객체
- 이벤트 풀링
- 요약
- 이벤트 핸들러 선언
- 5장. 재사용할 수 있는 컴포넌트 제작
- 재사용할 수 있는 HTML 요소
- 일체형 컴포넌트의 어려움
- JSX 마크업
- 초기 상태와 상태 헬퍼
- 이벤트 핸들러 구현
- 컴포넌트 구조 리팩토링
- JSX로 시작
- article 목록 컴포넌트 구현
- article 항목 컴포넌트 구현
- article 컴포넌트 추가 기능 구현
- 함수형 컴포넌트 만들기
- 렌더 프롭 활용
- 컴포넌트 트리 렌더링
- 기능 컴포넌트와 유틸리티 컴포넌트
- 요약
- 6장. 리액트 컴포넌트 생명주기
- 컴포넌트는 왜 생명주기가 필요한가?
- 프로퍼티와 상태 초기화하기
- 컴포넌트 데이터 가져오기
- 프로퍼티로 상태 초기화하기
- 프로퍼티로 상태 업데이트하기
- 렌더링 효율 최적화
- 렌더링 여부 결정
- 렌더링 최적화를 위한 메타데이터의 사용
- 명령형 컴포넌트 렌더링
- 제이쿼리 UI 위젯 렌더링
- 컴포넌트의 후처리
- 비동기 호출 정리
- 에러 경계
- 요약
- 7장. 컴포넌트 프로퍼티 검증
- 예측 값 파악
- 이동 가능한 컴포넌트
- 간단한 프로퍼티 검증기
- 기본 유형 검증
- 값 요청
- any 프로퍼티 값
- 유형과 값 검사기
- 렌더링될 수 있는 것
- 특정 유형 요청
- 특정 값을 요청
- 커스텀 프로퍼티 검증기 구현
- 요약
- 8장. 컴포넌트 확장
- 컴포넌트 상속
- 상태 상속
- 프로퍼티 상속
- JSX 및 이벤트 핸들러 상속
- 고차 컴포넌트 구성
- 조건부 컴포넌트 렌더링
- 데이터 소스 제공
- 요약
- 컴포넌트 상속
- 9장. 라우트를 통한 내비게이션 처리
- 라우트 선언
- 헬로 라우트
- 라우트 선언 분리
- 부모와 자식 라우트
- 라우터 매개변수 처리
- 라우트의 리소스 ID
- 선택적 매개변수
- 링크 컴포넌트 사용
- 기본 링크
- URL 및 쿼리 매개변수
- 요약
- 라우트 선언
- 10장. 서버단 리액트 컴포넌트
- 동형 자바스크립트란 무엇인가?
- 서버는 렌더링 대상이다
- 초기 로드 성능
- 백엔드와 프론트엔드 간의 코드 공유
- 문자열로 렌더링
- 백엔드 라우팅
- 프론트엔드 조정
- 데이터 가져오기
- 요약
- 동형 자바스크립트란 무엇인가?
- 11장. 모바일 우선 리액트 컴포넌트
- 모바일 우선 디자인의 근거
- React-bootstrap 컴포넌트 사용
- 내비게이션 구현
- 목록
- 폼
- 요약
- 12장. 왜 리액트 네이티브인가?
- 리액트 네이티브는 무엇인가?
- 리액트와 JSX는 익숙하다
- 모바일 브라우저 경험
- 같으면서 다른 안드로이드와 iOS
- 모바일 웹 애플리케이션 사례
- 요약
- 13장. 리액트 네이티브 프로젝트 시작하기
- create-react-native-app 설치하고 사용하기
- 리액트 네이티브 앱 생성하기
- 앱 실행하기
- Expo 설치하고 사용하기
- 시뮬레이터 사용하기
- iOS 시뮬레이터
- 안드로이드 시뮬레이터
- 요약
- 14장. 플렉스박스로 반응형 레이아웃 만들기
- 플렉스박스는 새로운 레이아웃 표준이다
- 리액트 네이티브 스타일 소개하기
- 플렉스박스 레이아웃 만들기
- 단순한 세 열 레이아웃
- 개선된 세 열 레이아웃
- 유연한 행
- 유연한 그리드
- 유연한 행과 열
- 요약
- 15장. 화면 탐색하기
- 탐색 기초
- 라우트 인자
- 탐색 헤더
- 탭과 드로워 탐색
- 상태 다루기
- 요약
- 16장. 항목 목록 렌더링하기
- 데이터 컬렉션 렌더링하기
- 목록 정렬하고 필터링하기
- 목록 데이터 가져오기
- 지연 목록 로딩
- 요약
- 17장. 프로그레스 보여주기
- 진행 상황과 사용성
- 프로그레스 표시하기
- 프로그레스 측정하기
- 탐색 인디케이터
- 단계 프로그레스
- 요약
- 18장. 지오로케이션과 맵
- 내 위치는 어디인가?
- 주변에는 무엇이 있을까?
- 가볼 만한 곳 주석달기
- 포인트 배치하기
- 오버레이 배치하기
- 요약
- 19장. 사용자 입력받기
- 텍스트 입력받기
- 목록 옵션 선택하기
- 온/오프 토글링하기
- 날짜/시간 입력받기
- 요약
- 20장. 알림, 통지, 확인
- 중요한 정보
- 사용자 확인받기
- 성공 확인
- 에러 확인
- 수동적 통지
- 액티비티 모달
- 요약
- 21장. 사용자 제스처에 대응하기
- 손가락으로 스크롤하기
- 터치 피드백주기
- 스와이프 가능과 취소 가능
- 요약
- 22장. 이미지 출력 제어하기
- 이미지 로딩하기
- 이미지 리사이즈하기
- 이미지 지연 로딩하기
- 아이콘 렌더링하기
- 요약
- 23장. 오프라인의 세계로
- 네트워크 상태 감지하기
- 애플리케이션 데이터 저장하기
- 애플리케이션 데이터 동기화하기
- 요약
- 24장. 애플리케이션 상태 다루기
- 정보 아키텍처와 플럭스
- 단일 방향성
- 동기식 업데이트 라운드
- 예측 가능한 상태 변환
- 통합 정보 아키텍처
- 리덕스 구현하기
- 초기 애플리케이션 상태
- 스토어 생성하기
- 스토어 프로바이더와 라우트
- 앱 컴포넌트
- Home 컴포넌트
- 모바일 앱에서의 상태
- 아키텍처 확장하기
- 요약
- 정보 아키텍처와 플럭스
- 25장. 왜 릴레이와 그래프QL인가?
- 또 다른 접근법?
- 새로운 용어들
- 선언형 데이터 의존성
- 애플리케이션 상태 변형하기
- 그래프QL 백엔드와 마이크로서비스
- 요약
- TodoMVC와 릴레이
- 26장. 릴레이 리액트 앱 구현하기
- 그래프QL 스키마
- 릴레이 부트스트래핑하기
- Todo 항목 추가하기
- Todo 항목 렌더링하기
- Todo 항목 완성하기