Props
- 단어 뜻 그대로
Component
의 속성값이다.
Props
는 부모 Component
로부터 전달 받은 데이터를 지니고 있는 객체이다.
Props
를 이용해 어떤 JavaScript
값이든 모두 자식 Componenet
에 전달할 수 있다.
Props 객체
Function Component
에서 Props
, 즉 Componenet
의 속성을 어떻게 정의하는지 알아보자.
import React, { useState } from 'react';
import Child from '../pages/Child/Child';
function Parent() {
const [color, setColor] = useState('red');
return (
<div>
<h1>Parent Component</h1>
<Child />
</div>
);
}
export default Parent;
Parent.js
부모 Component
이다.
- 부모
Component
안에서 <Child />
Component
를 import
후 <h1>
태그 아래에 위치하였다.
- 부모의
state
에 있는 데이터를 <Child />
Component
에게 props
를 통해 넘겨보자.
import React, { useState } from 'react';
import Child from '../pages/Child/Child';
function Parent() {
const [color, setColor] = useState('red');
return (
<div>
<h1>Parent Component</h1>
<Child titleColor={color} />
</div>
);
}
export default Parent;
- 자식
Component
의 props
로 titleColor
속성을 생성하였다.
titleColor
의 값으로 color
, 즉 부모 component
의 state
인 color
값을 전달하였다.
- 이러한 방식으로
props
를 통해 부모 component
내부의 state
값을 자식 component
에게 전달할 수 있다.
<Child />
component
내부에서 전달 받은 props
데이터를 어떻게 사용하는 지 확인하자.
component
의 props
는 객체이다.
Child.js
내부에서 props
객체가 어떻게 생겼는지 확인하자.
import React from 'react';
function Child(props) {
return (
<div>
<h1 style={{color: props.titleColor}}>Child Component</h1>
</div>
);
}
export default Child;
<Child />
component
내부에 <h1>
태그가 있다.
- 해당 태그의 글자 색상을 부모
component
의 state
로부터 전달 받은 데이터를 지정한다.
Function Component
는 부모가 전달한 props
를 인자로 받는다.
return
문 위에서 props
값을 console.log
로 확인한다.
- 결과 확인 시
props
객체 안에 부모로부터 전달 받은 데이터가 key-value
형태로 담겨 있는 것을 확인할 수 있다.
<h1 style={{color: props.titleColor}}>Child Component</h1>
component
내부에서 부모 component
로부터 전달 받은 props
데이터를 사용하기 위해서는 props
객체의 특정 키 값, props.titleColor
이렇게 작성하면 된다.
- 다음으로는
props
객체를 통해 부모에서 정의한 event handler
를 전달하는 방법을 알아보자.
Props & Event
Props 통한 Event Handler 전달
import React, { useState } from 'react';
import Child from '../pages/Child/Child';
function Parent() {
const [color, setColor] = useState('red');
return (
<div>
<h1>Parent Component</h1>
<Child titleColor={color} changeColor={ () => setColor('blue')} />
</div>
);
}
export default Parent;
props
객체를 통해 state
데이터 뿐만 아니라 부모에서 정의한 event handler function
도 넘겨줄 수 있다.
props
의 changeColor
값으로 Parent Function
에서 정의한 setColor Function
자체를 넘겨주고 있다.
<Child /> Component
에서 어떻게 props
로 전달받은 handleColor Function
를 활용하는지 알아보자.
import React from 'react';
function Child(props) {
return (
<div>
<h1 style={{color: props.titleColor}}>Child Component</h1>
<button onClick={props.changeColor}>Click</button>
</div>
);
}
export default Child;
<Child /> component
내부에 <button>
태그가 있다.
- 다음의 순서에 따라서 코드가 실행된다.
<button>
요소에서 onClick
이벤트 발생
- 이벤트 발생 시
props.changeColor
실행
props
객체의 changeColor
, 즉 부모 component
로부터 전달 받은 setColor Function
실행
setColor Function
실행 시 state
의 color
값이 blue
로 변경
<Child /> component
에 변경된 state
데이터(color
) 전달
props.titleColor
를 글자 색상으로 지정하는 <h1>
타이틀 색상 변경