함수 컴포넌트에서 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> 타이틀 색상 변경