리액트의 props를 유치원생도 이해할 수 있도록 정말 쉽고 상세히 설명해볼게요! 이걸 장난감 상자를 사용하는 이야기로 풀어볼게요. 🧸📦
1. Props란 무엇일까요?
Props는 "선물 상자" 같은 거예요.
- 상자 안에는 **"아이들(컴포넌트)이 필요한 물건"**이 들어있어요.
- 부모님(부모 컴포넌트)이 아이(자식 컴포넌트)에게 물건을 줄 때, props라는 상자에 담아서 줘요.
💡 props = properties(속성)의 줄임말!
2. 장난감 이야기로 풀어보기
📖 장난감 가게의 규칙
- 부모님(부모 컴포넌트)이 상자를 포장해서 아이(자식 컴포넌트)에게 줘요.
- 아이는 받은 상자(props)를 열어 필요한 걸 꺼내서 사용해요.
- 부모님이 상자를 포장할 때 안에 뭐가 들어갈지 결정해요.
3. 예시: 장난감을 전달하기
부모 컴포넌트
부모님은 아이가 놀 장난감을 고르고, 상자에 담아 줍니다.
javascript
코드 복사
function Parent() { return ( <Child toy="레고" /> ); }
자식 컴포넌트
아이는 부모님이 준 상자를 받아 열어봅니다.
javascript
코드 복사
function Child(props) { return ( <div> <p>내가 받은 장난감: {props.toy}</p> </div> ); }
화면에 보이는 결과:
코드 복사
내가 받은 장난감: 레고
4. 더 구체적으로 설명
A. props는 "상자"
- 부모 컴포넌트는 자식에게 props라는 상자를 전달합니다.
- 상자 안에는 장난감 같은 값이 들어 있어요.
B. 상자를 여는 방법
- 자식 컴포넌트에서 props라는 이름으로 받은 상자를 열어 안에 들어 있는 물건을 꺼냅니다.
javascript
코드 복사
function Child(props) { // props.toy는 부모님이 준 "레고"라는 장난감이에요. return <p>{props.toy}</p>; }
5. 여러 가지 props 보내기
부모님이 여러 물건을 보낼 수도 있어요!
javascript
코드 복사
function Parent() { return ( <Child toy="인형" color="분홍색" /> ); } function Child(props) { return ( <div> <p>내 장난감: {props.toy}</p> <p>장난감 색깔: {props.color}</p> </div> ); }
화면에 보이는 결과:
코드 복사
내 장난감: 인형 장난감 색깔: 분홍색
6. 조금 더 멋지게 쓰는 법: 구조 분해
props를 더 간단하게 사용할 수도 있어요.
javascript
코드 복사
function Child({ toy, color }) { return ( <div> <p>내 장난감: {toy}</p> <p>장난감 색깔: {color}</p> </div> ); }
이렇게 써도 결과는 똑같아요!
7. Props를 왜 사용할까요?
- 부모가 필요한 것을 자식에게 전달할 수 있어요.
- 자식은 **부모님이 준 선물(props)**을 활용해서 화면을 만듭니다.
- 부모와 자식 사이의 대화 도구 같은 거예요.
8. Props의 중요한 규칙
- 읽기 전용!
- 자식은 받은 상자를 열어서 볼 수만 있고, 상자를 바꿀 수는 없어요.
- 부모님이 결정한 내용은 자식이 바꿀 수 없어요.
- 항상 부모에서 자식으로 전달
- 부모는 props를 전달하고, 자식은 이를 받아요.
- 자식이 부모에게 props를 보낼 수는 없어요.
9. 정리
- Props는 부모님이 자식에게 보내는 "선물 상자"예요.
- 상자(props)에 무엇이 들어 있는지는 부모님이 결정해요.
- 자식은 상자를 열어서 필요한 걸 꺼내 사용해요.
- Props는 읽기 전용이고, 부모에서 자식으로만 전달돼요.
'REACT' 카테고리의 다른 글
| REACT_redux (1) | 2024.11.26 |
|---|---|
| REACT_버튼을 누르면 숫자 증가 (0) | 2024.11.26 |
| REACT_화살표 함수 지피티의 정리를내가또정리하기수정중 (0) | 2024.11.20 |
| REACT_JSON server (0) | 2024.11.20 |
| REACT_Router (0) | 2024.11.18 |