일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- object
- db
- await
- prj
- Import
- 게임
- setTimeout()
- sql
- slow and steady
- Porject
- json
- JS #프로젝트
- https://m.blog.naver.com/tt2t2am1118/221010125300
- async
- 동기
- execCommand
- addEventListener
- callback
- webpack
- Project
- mysql
- https://youtube.com/playlist?list=PLuHgQVnccGMA5836CvWfieEQy0T0ov6Jh&si=FTaYv8m21EhO-A2K
- 참고블로그
- database
- 혼프
- js
- ajax
- eport
- 비동기
- promise
- Today
- Total
C-log
⚛️Start! React : section08 - props 본문
이번 시간에는 props를 사용할 것이다. props는 우리가 직접 설정한 값을 함수로 가져와서 변형하고 응용해서 다시 값을 넘겨주는 역할을 한다. 기본적인 형태만 보아서는 단순해 보이지만 응용했을 때는 복잡하고 머리아프다. 따라서 props의 역할과 props를 응용했을 때 어떻게 사용될지를 생각하면서 해당 수업을 들으면 더 질좋은 강의 시간이 될 것이다. 아래 코드를 살펴보자
*App.js
*Class_App.js
props는 외부 컴포넌트로부터 받아온 값을 내부 컴포넌트에서 변경할 수 없다. 실행하면다면 오류가 날 것이다. 임의로 변경한 코드는 아래와 같다.
위의 코드는 임의로 props의 값을 변경 했을 때이다. 브라우저에서는 에러 메세지 창이 뜰 것이다. 우리가 해당 props를 내부적으로 변경하려면 useState를 사용해야 한다. useState를 사용해서 변경한 모습은 아래와 같다.
useState를 사용해서 클릭을 했을 때 age의 값이 변동된다. 이와 동시에 10의 값을 가지고 있는 컴포넌트는 1씩 증가되면서 msg의 삼항연산자 조건문에도 변동이 생겨 msg의 문자열도 바뀐다. 여기서는 컴포넌트 내부적으로 변경이 있는 것이기에 useState가 따로 필요 없다. 마지막으로 UserName이라는 컴포넌트를 따로 만들어서 name의 useState의 상태 변경이 된 것을 넘겨주는 코드를 작성해 볼 것이다. 아래 코드를 살펴보자.
*UserName.js
*Class_App.js
변경되는 상태값을 내부 컴포넌트에서 다시 컴포넌트를 생성해서 넘겨 받은 형태이다. 결국 현재 Class_App내부 컴포넌트에서 name의 useState가 변경이되면 UserName이 props로 해당 name을 주었기에 UserName 컴포넌트 내부에서도 변경이된다. 마지막으로 {age}는 props.age로 작성해도 괜찮다. 개발자와 개발 환경에 따라 작성방법은 다를 수 있다.
지금까지는 기본적인 형태들만 이루어져 있기 때문에 어려움이 없지만 이를 복합적으로 응용하게 되면 어려움이 생길 수 있다. 따라서 우리가 지금까지 배운 것을 빨리 익숙해지려고 노력할 필요가 있다.
'⚛️React > ⚡ver.1' 카테고리의 다른 글
⚛️Start! React : section10 - 들어가기 앞서 (0) | 2024.01.18 |
---|---|
⚛️Start! React : section09 - 더미데이터, map()반복문 (0) | 2024.01.17 |
⚛️Start! React : section07 - state,useState (0) | 2024.01.15 |
⚛️Start! React : section06 - Handling Event (0) | 2024.01.12 |
⚛️Start! React : ver.24년 개정 (1) | 2024.01.12 |