FrontEnd/React

[React]Props란?

Hojung7 2024. 11. 6. 11:00
1. React Props


- React에서 컴포넌트에 데이터를 전달하는 방법 중 하나


- 부모 컴포넌트 → 자식 컴포넌트로 전달


- props로 전달 받은 값은 컴포넌트에서 변경할 수 없음(읽기 전용)


- 컴포넌트간의 데이터 전달이 간단해지고 유지보수성, 재사용성이 증가됨.

 

#예제1

1. src/components/R03_Props1.js 생성 후 작성

import React from 'react';
// props : 부모 컴포넌트가 자식 컴포넌트에 데이더 전달 시 사용하는 객체
// * props는 자식 컴포넌트에서 수정 불가능 *
const PropsEx1 = (props) => {
// 부모 컴포넌트(App.jsdml Function App())로 부터 전달 받은 값(props) 확인
console.log('PropsEx1');
console.log(props);
return(
/* 부모 컴포넌트로 부터 전달 받은 값(props)를 이용해서 자식 컴포넌트 만들기*/
   <p>번호 : {props.num === undefined ? 0 : props.num}
        /
      이름 : {props.name === undefined ? '기본값' : props.name}
   </p>
)
}
export default PropsEx1;

 

2. src/App.js 작성

import './App.css';
import Props1 from './components/R03_Props1';
function App() {
return (
<>
{/* 부모 컴포넌트인 App() 에서 자식 컴포넌트인 Props에게 num, name을 전달 */}
   <Props1 num='1' name = '홍길동'/>
   <Props1 num='2' name = '김미영'/>
   <Props1/>
</>
);
}
export default App;

 

<결과>

 

#예제2

 

1. src/components/R04_Props2.js 생성 후 작성

import React from 'react';
const PropsEx2 = (props) => {
// 부모 컴포넌트(App.js)로 부터 전달 받은 값(props) 확인
console.log('PropsEx2');
console.log(props); // 객체 형태 {K:V, K:V}
// props에서 key와 변수명이 일치하는 경우 value를 해당 변수에 대입
let {name, age, address, gender} = props;
return(
<ul className='info'>
<li>이름 : {name}</li>
<li>나이 : {age}</li>
<li>주소 : {address}</li>
<li>성별 : {gender}</li>
</ul>
)
}
export default PropsEx2;

 

2. src/App.js 작성

import './App.css';
import Props2 from './components/R04_Props2';
function App() {
return (
<>
<Props2 name="강감찬" age="72" address="낙성대" gender="남자"/>
<Props2 name="천추태후" age="66" address="개경" gender="여자"/>
</>
);
}
export default App;

 

3. App.css 작성

.info{
width: 250px;
border: 2px solid black;
}

 

<결과>

 


 

2. Props Drilling (상태 내리꽂기)

 

- props를 통해 하위 컴포넌트에 계속 props를 계속해서 전달하는 것


- 장점 : 명시적이며, 값의 추적에 용이함


- 단점 : 중간 컴포넌트가 필요없는 props를 계속 전달 받아야함

 

1. src/components/R05_Props3.js 생성 후 작성

import React from 'react';

const ChildComponent = (props) => {
/* 여기서 props : PropsEx3로 부터 전달 받은 데이터 */
return(
<>

3_Props 5

<h3>App에서 부터 전달된 name : {props.name}</h3>
<h3>PropsEx3에서 전달된 age : {props.age}</h3>
</>
);
}

const PropsEx3 = (props) => {
/* 여기서 props : App으로 부터 전달 받은 데이터 */
return(
<>
{/* Props Drilling : props를 하위 컴포넌트로 계속 전달 */}
<ChildComponent name={props.name} age={props.name === '김영희' ? 20 : 25}/>
</>
);
}
export default PropsEx3;

 

2. src/App.js 작성

import './App.css';
import Props3 from './components/R05_Props3';
function App() {
return (
<>
<Props3 name="김영희"/>
<Props3 name="김철수"/>
</>
);
}
export default App;

 

<결과>

 

'FrontEnd > React' 카테고리의 다른 글

[React]State란?  (0) 2024.11.06
[React] Component(컴포넌트)  (0) 2024.11.06
[React]React 설치 및 개발환경설정  (0) 2024.11.06