React는 데이터가 부모 컴포넌트에서 자식 컴포넌트로 흐르는 단방향 데이터 흐름을 지향합니다. 이렇게 함으로써 컴포넌트를 단순하고 예측할 수 있게 만들었습니다. 부모는 자식에게 props 값을 전달하고 렌더링 합니다. 최상위 컴포넌트의 속성이 바뀌면 React는 변경 사실을 컴포넌트 트리에 전달하고, 해당 속성을 사용한 모든 컴포넌트를 다시 렌더링합니다.
![](http://cafefiles.naver.net/MjAxNzEyMDZfMjc0/MDAxNTEyNDk1NDE3MjU0.l_9C62um2gr2iY6ML6ZmKBTWNGMMTZaH0jJaovN7x7Mg.DoYcgUkGaiHtBJjfmzedh8o3PJLP_5Uf-2W_gIHl5J0g.PNG.lifeleader/%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7_2017-12-04_%EC%98%A4%ED%9B%84_12.39.03.png)
![](http://cafefiles.naver.net/MjAxNzEyMDZfMjQz/MDAxNTEyNDk1NDQwOTQ4.bMHsG81H8YIlsxBGgIb3drvVDsIJwbY0XngESIr9fPMg.x_k11wggAx_l54GMkLWJIRqEqQWjvsIofMDfMDtx1UUg.PNG.lifeleader/%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7_2017-12-04_%EC%98%A4%ED%9B%84_12.46.05.png)
![](http://cafefiles.naver.net/MjAxNzEyMDZfMjMg/MDAxNTEyNDk1NDYyOTUz.97iK3_crlCZHcLO9eCZxk7rQaU2C_Ktyvd9q7xbHrP8g.ecHsZJ53GDoTsUfOsr9U80P-6S4bUKdGDOW9VCHNTFUg.PNG.lifeleader/%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7_2017-12-04_%EC%98%A4%ED%9B%84_12.51.43.png)
![](http://cafefiles.naver.net/MjAxNzEyMDZfMjEx/MDAxNTEyNDk1NTE3NTQx.bHkaEe3d8D8lSALXevhIZacJIX7Qtnvao-3izJK2T9wg.hkfO53TkUWkbfcF1GF478yD9cqBsacwsLmPFUOkyP5Ag.PNG.lifeleader/%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7_2017-12-04_%EC%98%A4%ED%9B%84_12.58.28.png)
![](http://cafefiles.naver.net/MjAxNzEyMDZfMTQz/MDAxNTEyNDk3ODQ2MzI2.MN-NMGmSgPkM4ovAabewTBmjwoW4B4180s6J8BVlNTgg.8nc8WRzNQpEV1gZ3gyMuEAunchHY2U1RBsEwoF735XIg.PNG.lifeleader/%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7_2017-12-06_%EC%98%A4%EC%A0%84_3.13.38.png)
![](http://cafefiles.naver.net/MjAxNzEyMDZfMTU3/MDAxNTEyNDk3ODQ2NDIy.qKc73Fo4CzGm-llElpEXaBzMypeLsE5ilGPFux-cZAUg.VhLgi4_2fODCRidrYavUjBs_mwqEykSHspCS19JM-Csg.PNG.lifeleader/%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7_2017-12-06_%EC%98%A4%EC%A0%84_3.14.14.png)
또한, 컴포넌트는 내부 상태 값을 가질 수 있으며, 이 값은 컴포넌트 내부에서만 수정할 수 있습니다. React 컴포넌트는 본질적으로 단수합니다. props와 state, 두 값을 이용해서 가상 표현 객체를 생성하는 함수라고 볼 수 있습니다.
<props>
- "properties"의 줄임말, 사용자가 컴포넌트에 전달해 보관하길 원하는 데이터를 의미
- 컴포넌트 내부의 immutable data(변하지 않는 데이터)
- jsx 내부에 {this.props.propsName}
- 컴포넌트를 사용할 때, <> 괄호 안에 propsName="value"
- this.props.children 은 기본적으로 갖고 있는 props로서, <Cpnt> 여기에 있는 값이 들어간다.</Cpnt>
직접 실습을 해보도록 하겠습니다.
props 부분을 빨간색 줄로 표시하였습니다.
아래 캡쳐화면들은 모두 사진을 클릭하면 원본 크기로 보실 수 있습니다.
![](http://cafefiles.naver.net/MjAxNzEyMDZfMjc0/MDAxNTEyNDk1NDE3MjU0.l_9C62um2gr2iY6ML6ZmKBTWNGMMTZaH0jJaovN7x7Mg.DoYcgUkGaiHtBJjfmzedh8o3PJLP_5Uf-2W_gIHl5J0g.PNG.lifeleader/%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7_2017-12-04_%EC%98%A4%ED%9B%84_12.39.03.png)
이번에는 App 컴포넌트의 props를 하위 컴포넌트인 Codelab의 props로 전달하는 방법을 알아봅시다.
![](http://cafefiles.naver.net/MjAxNzEyMDZfMjQz/MDAxNTEyNDk1NDQwOTQ4.bMHsG81H8YIlsxBGgIb3drvVDsIJwbY0XngESIr9fPMg.x_k11wggAx_l54GMkLWJIRqEqQWjvsIofMDfMDtx1UUg.PNG.lifeleader/%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7_2017-12-04_%EC%98%A4%ED%9B%84_12.46.05.png)
기본 값 설정하는 방법은 아래와 같습니다.
Component.defaultProps = {...}
![](http://cafefiles.naver.net/MjAxNzEyMDZfMjMg/MDAxNTEyNDk1NDYyOTUz.97iK3_crlCZHcLO9eCZxk7rQaU2C_Ktyvd9q7xbHrP8g.ecHsZJ53GDoTsUfOsr9U80P-6S4bUKdGDOW9VCHNTFUg.PNG.lifeleader/%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7_2017-12-04_%EC%98%A4%ED%9B%84_12.51.43.png)
Type 설정하는 방법은 아래와 같습니다.
Component.propTypes = {...}
![](http://cafefiles.naver.net/MjAxNzEyMDZfMjEx/MDAxNTEyNDk1NTE3NTQx.bHkaEe3d8D8lSALXevhIZacJIX7Qtnvao-3izJK2T9wg.hkfO53TkUWkbfcF1GF478yD9cqBsacwsLmPFUOkyP5Ag.PNG.lifeleader/%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7_2017-12-04_%EC%98%A4%ED%9B%84_12.58.28.png)
이번에는 지금까지 배운 것들을 실습해 보도록 하겠습니다.
아래 화면과 같이 아래쪽 흰색 화면에 문자가 잘 출력 되셨나요?
![](http://cafefiles.naver.net/MjAxNzEyMDZfMTQz/MDAxNTEyNDk3ODQ2MzI2.MN-NMGmSgPkM4ovAabewTBmjwoW4B4180s6J8BVlNTgg.8nc8WRzNQpEV1gZ3gyMuEAunchHY2U1RBsEwoF735XIg.PNG.lifeleader/%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7_2017-12-06_%EC%98%A4%EC%A0%84_3.13.38.png)
![](http://cafefiles.naver.net/MjAxNzEyMDZfMTU3/MDAxNTEyNDk3ODQ2NDIy.qKc73Fo4CzGm-llElpEXaBzMypeLsE5ilGPFux-cZAUg.VhLgi4_2fODCRidrYavUjBs_mwqEykSHspCS19JM-Csg.PNG.lifeleader/%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7_2017-12-06_%EC%98%A4%EC%A0%84_3.14.14.png)
다음 시간에는 React.js 의 핵심적인 기능 중의 하나인
state에 대해 알아보려고 합니다.
오늘도 전문성과 친절함이 부족한 긴 글을 읽어주셔서 고맙습니다.
'React > 왕초보 도전' 카테고리의 다른 글
6. 간단한 영화 웹 서비스 만들기 1 (0) | 2017.12.19 |
---|---|
5. component mapping , 간단한 주소록 구현 (0) | 2017.12.19 |
4. state 소개 , Counter 웹 만들어보기 (0) | 2017.12.19 |
2. ES6 클래스, JSX 소개 (0) | 2017.12.19 |
1. React 소개 (0) | 2017.12.19 |