[React 공식 문서] Tania Rascia React Tutorial Note

SMALL

0. 기본 개념

- DOM(Document Object Model) : 프로그래밍 언어가 웹사이트의 콘텐츠, 구조 및 스타일을 조작할 수 있도록 하는 인터페이스

- DOM과 HTML 소스코드의 차이

   (1) DOM은 클라이언트 측 JS에 의해 수정됨. (ex. 콘솔에서 배경색 수정 시, 바로 반영)

   (2) 브라우저는 소스코드의 오류를 자동으로 수정

 

1. React란?

- 자바스크립트 라이브러리 (프레임워크 X)

   * 라이브러리 vs 프레임워크

   - 프레임워크: 애플리케이션 코드는 프레임워크가 짜놓은 틀 안에서 수동적으로 동작 > 제어의 흐름: "프레임워크"

   - 라이브러리: 개발자가 직접 제어. 라이브러리를 "가져다"쓰게 됨.

- 모델, 뷰, 컨트롤러 중 "뷰" 층에 해당 !

- 컴포넌트 생성 가능 (효율적이고 빠른 UI 생성, HTML 요소 재사용, 커스텀 등을 위해)

 

2. 설정 및 설치

(1) 정적 HTML 파일

- <head>에 React, React Dom, Babel 관련 CDN 넣기

   - React : React 최상위 API

   - React DOM : DOM 전용 메서드 추가

   - Babel : 오래된 브라우저에서 ES6+를 사용할 수 있게 해주는 JS 컴파일러

- first code block 만들기 > render 추가 > ReactDOM.render를 사용해 App class 렌더링!

 

(2) React App 생성

- npx create-react-app 파일 이름

- cd 파일이름 && npm start

- React, React DOM, Css file 을 import (index.js 파일에)

* React Developer Tools : 컴포넌트 검사 가능!

 

3. JSX: JavaScript + XML

- HTML의 class와 같은 의미를 가지는 className 사용

- JSX의 속성과 메서드는 camelCase로

- 태그를 닫을 때는 / 사용

 

4. 컴포넌트

- 많고 세분화된 컴포넌트들이 메인 App 컴포넌트에 로드됨

 

5. Props

- <Table characterData = {characters} /> 를 통해 table 데이터가 연결

- const {characterData} = this.props 선언함으로써 App.js에 있는 characterData.js를 Table에서도 사용 가능

 

6. State

-  DB에 필수적으로 추가될 필요 없이 저장/수정되어야한다.

    ex. 쇼핑몰 장바구니 (구매 결정은 안했지만 구매에 관심있는 목록을 저장)

- this.state.속성 => state 접근

- this.setState => state 값 변경

- filter된 배열은 새 배열로 생성. (기존값 변경 x)

 

7. 양식 데이터 제출

- 새로운 데이터를 추가할 때 사용

- 기존의 데이터를 유지하고 추가! (업데이트)

- Form  세팅 -> 기본 속성: name, job

- state를 Form 안에 있는 initialState로 설정 => state = this.initialState

 

- 입력을 할 때, event 변수를 통해 name과 value에 값 전달 > state 변경됨 (키와 값 ~ 이름: 값)

- handleChange 메소드를 이용해서 name, job에 각각 input이 발생할 때, 각각의 state가 변화.

 

- 마지막 단계: 데이터를 실제로 제출 & 부모 state를 업데이트

- handleSubtmit(): 기존의 this.state.characters를 수정, 새로운 character 매개변수 추가

- submitForm(): 함수 호출 & Form state를 character 매개변수에 넘김. > initial state를 reset

 

8. Pulling in API Data

- React의 가장 보편적인 사용: API로부터 데이터 가져오기

- componentDidMount() ~ React lifecycle method

                                       ~ 데이터를 가져오기 전에 DOM에 컴포넌트를 렌더링

                                       ~ 컴포넌트가 마운트된 직후, 즉 트리에 삽입된 직후에 호출

- LifeCycle: 리액트에서 메서드가 불리는 순서

 

9. React 앱 빌드/배포

- 목적: 모든 react 코드를 컴파일하고 디렉토리의 루트 어딘가에 배치(정적 파일 로드)

- 앱 빌드: npm run build ~ 내가 만든 앱을 포함하는 build 폴더가 생성

- Git을 통해 배포 가능!

- package.json에 "homepage" : "url" 코드 삽입

- package.json > scripts 속성에 아래 코드 삽입

                         "predeploy" : "npm run bulid", "deploy" : "gh=pages -d build"

- npm install --save-dev gh-pages (devDependencies에 gh-pages 추가)

* devDependencies: 어플을 개발할 때, 보조해주는 라이브러리 저장 ex. webpack, js-compression, 번들 분석기

- npm run build > npm run deploy => 끝!

728x90