부모 컴포넌트에서 내려준 값을 자식 컴포넌트에서 사용하는 것을 의미
컴포넌트에서 다른 컴포넌트로 데이터 전달(props 전달)
전달기능(함수)는 부모 컴포넌트에서 구현 부모->자식에게 전달(형제 컴포넌트는 서로 props를 전달할 수 없다)
자식 컴포넌트에서 부모 컴포넌트로 콜백 함수를 사용하여 props를 전달할 수 있음
부모 -> 자식에게 전달
import React from 'react' ;
import Child from './Child' ;
const Parent = () => {
return (
<div >
<Child money ={1000}/ >
</div >
);
};
<!-- 자식 -->
import React from 'react' ;
const Child = (props ) => {
<!-- money -->
return (
<div >
<p > {props.money}</p >
</div >
);
};
자식 -> 부모에게 전달
import React from 'react' ;
import Child from './Child' ;
const Parent = () => {
function Click (money ) {
alert(money);
};
return (
<div >
<Child money ={1000} Click ={click} />
</div >
);
};
<!-- 자식 -->
impore React from 'react' ;
const Child = (props ) => {
return (
<div >
<button onClick ={() => {
props.Click(props.money);
}};
>
값 전달
</button >
</div >
);
};
부모 컴포넌트에서 전달하는 props 값이 없을 때
import React from 'react' ;
import Child from './Child' ;
const Parent = () => {
return (
<div >
<Child />
</div >
);
};
<!-- 자식 -->
import React from 'react' ;
const Child = (props ) => {
return (
<div >
<p > {props.money}</p >
</div >
);
};
부모 컴포넌트에서 props를 전달하지 않을 경우 기본값을 설정
기본 값은 컴포넌트 밖에, 자식 컴포넌트 안에서 선언해준다
import React from 'react' ;
const Child = (props ) => {
return (
<div >
<p > {props.money}</p >
</div >
);
};
Child.defaultProps = {
money : 10000
}
Child.defaultProps = {
name : PropTypes.string.isRequired,
children : PropTypes.number
};
++
import React from 'react' ;
const Child = (props ) => {
return (
<div >
<p > {props.money}</p >
</div >
);
};
const Child = (props ) => {}
const Child = ({ name, color, subject = "먼지" }: Child ) => {}
사용 예시
import React from 'react' ;
import Child from './Child' ;
const Parent = () => {
return (
<div >
<Child name ="dust" color ="black" subject ="먼지" />
<Child name ="berry" color ="red" subject ="빨강" />
<Child />
</div >
);
};
import React from 'react' ;
const Child = (props ) => {
return (
<div >
<p style ={{ color: props.color }}> {props.name}는 {props.subject}(이)야</p >
</div >
);
};
Child.defaultProps = {
name : 'sea' ,
color : 'blue' ,
subject : '파랑'
}
결과
import React from 'react' ;
import Child from './Child' ;
const Parent = () => {
return (
<div >
<Child name ="dust" color ="black" subject ="먼지" />
<Child name ="berry" color ="red" subject ="빨강" />
<Child />
</div >
);
};
import React from 'react' ;
const Child = ({ name, color, subject } ) => {
return (
<div >
//////////// props. 를 제외하고 변수명만 적어줌
<p style ={{ color: color }}> {name}는 {subject}(이)야</p >
</div >
);
};
Child.defaultProps = {
name : 'sea' ,
color : 'blue' ,
subject : '파랑'
}
또는 이런식으로 변경할 수 있다
props.children
import React from 'react' ;
import Child from './Child' ;
const Parent = () => {
return (
<div >
<Child > 먼지</Child >
</div >
);
};
import React from 'react' ;
const Child = (props ) => {
return (
<div >
<p > {props.name}는 {props.children}(이)야</p >
</div >
);
};
Child.defaultProps = {
name : 'dust'
}
사용 예시
import React from 'react' ;
import Child from './Child' ;
import Hello from './Hello' ;
const Parent = () => {
return (
<div >
<Child >
<p > 먼지</p >
<Hello color ="pink" />
</Child >
</div >
);
};
<!-- -->
import React from 'react' ;
const Child = ({ name="dust" , children } ) => {
return (
<div >
<p > {name}는 {children}</p >
</div >
);
};
const Hello({ color }) => {
return <div style ={{ color }}> 안녕하세요!(분홍색) </div >
}
여러개의 props
const Parent = () => {
const dust = {
name : 'dust' ,
color : 'black' ,
subject : '먼지'
};
<!-- const { name, color, subject } = dust; 생략가능 -->
const dust2 = {
name : 'dust2' ,
color : 'white' ,
subject : '먼지2'
};
<!-- const { name, color, subject } = dust2; 생략가능 -->
return (
<div >
<Child {...dust } />
// 속성값 전부 불러오기
<Child {...dust2 }/>
</div >
);
};
const Child = ({ color, name, subject } ) => {
return (
<div >
<p style ={{ color }}> {name}는 {subject}(이)야</p >
</div >
);
};
Child.defaultProps = {
name : 'sea' ,
color : 'blue' ,
subject : '파랑'
}