함수 컴포넌트에서 state, 즉 해당 컴포넌트의 상태를 정의하는 방법
import React, { useState } from 'react';
function State() {
**const [color, setColor] = useState('red');**
return (
<div>
<h1>Function Component | State</h1>
</div>
);
}
export default State;
return
문 안에 들어있다.useState
함수를 import 한 후 사용해야 한다.useState
함수는 컴포넌트 선언문(function State()
)과 return
문 사이에 작성한다.useState
함수에 초기값('red')을 인자로 넣어 호출하면 배열을 반환한다.color
로, color의 값을 갱신하는 함수를 setColor
로 그리고 color의 초기값을 red
로 정의했다.→ 함수 컴포넌트의 state는 useState hook을 사용하여 정의한다.
state 에서 상태값을 설정하는 이유는 결국 컴포넌트 안의 요소에서 그 상태값을 반영해서 데이터가 바뀔 때마다 효율적으로 화면(UI)에 나타내기 위함이다.
return
문 안에 <h1>
타이틀 요소가 있다.<h1 style={{ color: }}>Function Component | State</h1>
<h1 style={{ color: color }}>Function Component | State</h1>
// key값 color는 색상을 부여하기 위한 속성
// value 값 color는 useState 함수를 통해 초기값인 'red'를 담고 있는 변수
import React, { useState } from 'react';
function State() {
const [color, setColor] = useState('red');
return (
<div>
<h1 style={{ color: color }}>Function Component | State</h1>
<button onClick={() => setColor('blue')}>Click</button>
</div>
);
}
export default State;
<h1>
태그 아래에 <button>
요소를 추가해주었다.<button>
요소에서 onClick
이벤트 발생setColor
함수 실행<h1>
태그 글자 색상 변경함수 컴포넌트에서 props, 즉 컴포넌트의 속성을 정의하는 방법
// Parent.js
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
: 부모 컴포넌트<Child/>
컴포넌트를 import 후 <h1>
태그 아래에 위치해주었다.<Child />
컴포넌트에게 props를 통해 넘겨보겠다.// Parent.js
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;
titleColor
속성을 생성해주었다.titleColor
의 값으로 color
, 즉 부모 컴포넌트의 state인 color
값을 전달해주었다.Child.js
내부에서 props 객체가 어떻게 생겼는지 확인해보자.// Child.js
import React from 'react';
function Child(props) {
// console.log(props);
return (
<div>
<h1 style={{color : props.titleColor}}>Child Component</h1>
</div>
);
}
export default Child;
<Child />
컴포넌트 내부에 <h1>
태그가 있다.return
문 위에서 props
값을 console.log
로 확인한다.<h1 style={{color : props.titleColor}}>Child Component</h1>
// props : 해당 컴포넌트의 props 객체
// props.titleColor : props 객체의 특정 key(titleColor)값. 즉 "red"
props.titleColor
이렇게 작성해주면 된다.// Parent.js
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;
changeColor
값으로 Parent 함수에서 정의한 setColor
함수 자체를 넘겨주고 있다.<Child />
컴포넌트에서 props로 전달받은 handleColor
함수를 활용하는 방법은 아래와 같다.// Child.js
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 />
컴포넌트 내부에 <button>
태그가 있다.<button>
요소에서 onClick
이벤트 발생props.changeColor
실행changeColor
, 즉 부모 컴포넌트로부터 전달받은 setColor
함수 실행setColor
함수 실행 시 state의 color
값이 'blue'
로 변경<Child />
컴포넌트에 변경된 state 데이터(color
) 전달props.titleColor
를 글자 색상으로 지정하는 <h1>
타이틀 색상 변경