hook
- 상태(state)와 라이프 사이클(lifecycle) 관리 기능을 함수 컴포넌트에서도 사용할 수 있도록 해주는 함수
- 사용 규칙
- 함수 컴포넌트 내부에서 호출
- 커스텀 훅 내부에서 호출
- 최상위에서 호출
- 종류: useState, useEffect, useCallback 등
import React, { useState } form 'react';
const Login = () => {
const [color, setColor] = useState('white')
...
return (
...
)
}
export default Login;
props
- 컴포넌트의 속성값
- 부모 컴포넌트로 전달받은 데이터를 지닌 객체
- 전달받는 데이터는 변수, 함수, state 값, 이벤트 핸들러 등 상관 없음
import React from 'react';
import Child from './Child';
const Parent = () => {
const name = '창선';
const testClick = () => {
console.log("테스트");
}
return (
<div>
<span>이름: {name}</span>
<button onClick={testClick}>버튼</button>
<Child
name={name}
englishName='Changsun'
testClick={testClick}
/>
</div>
)
}
export default Parent;
import React from 'react';
const Child = (props) => {
return (
<div>
<span>{props.name}</span>
<span>{props.enlgishName}</span>
<button onClick={props.testClick}>버튼</button>
</div>
)
}
export default Child;
state
- 컴포넌트의 상태값
- 컴포넌트의 UI를 결정하는 상태값
- hook 중 하나인 useState 함수가 필요
import React, { useState } form 'react';
const Login = () => {
const [color, setColor] = useState('white')
return (
<div>
<p
style={{ backgroundColor: color }}
>Hello, World!</p>
<button onClick={() => setColor('black')}>색상 변경</button>
</div>
)
}
export default Login;
props와 state의 조합: state 끌어올리기
import React, { useState } from 'react';
import Child from './Child';
const Parent = () => {
const [color, setColor] = useState('white');
const changeColor = () => {
setColor('black');
}
return (
<div>
<Child color={color} change={changeColor} />
</div>
)
}
export default Parent;
import React from 'react';
const Child = (props) => {
return (
<div>
<p>{props.color}</p>
<button onClick={props.change}>색상 변경</button>
</div>
)
}
export default Child;