Hook์ด React ๋ฒ์ 16.8์ ์๋ก ์ถ๊ฐ๋์์ต๋๋ค. Hook์ ์ด์ฉํ์ฌ Class๋ฅผ ์์ฑํ ํ์ ์์ด ์ํ ๊ฐ๊ณผ ์ฌ๋ฌ React์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Hook์ Class์์ด React ๊ธฐ๋ฅ๋ค์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์๋ ค์ค๋๋ค.
React Hook์ function Component์์ state์ life cycle method๋ฑ์ react ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋๋ก ๋ง๋ค์ด์ก์ต๋๋ค. React์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต๋๋ ํ ๋ค์ ๋๋ถ๋ถ use๋ก ์์ํ๋ ํจ์๋ค์ ๋๋ค.
Hook์ ๊ณต๋ถํ๊ธฐ ์ํด ๊ฐ๋จํ class Component๋ฅผ Hook์ ์ด์ฉํด์ function Component๋ก ๋ณ๊ฒฝํด๋ณด๊ฒ ์ต๋๋ค.
๊ผญ class Component ๋์ function Component๋ฅผ ์ฌ์ฉํด์ผํ๋ ๊ฒ์ ์๋๋๋ค. ๋ํ์ฌ ๊ธฐ์กด์ class Component๋ก ์์ฑ๋ ์ฝ๋๊ฐ ์๋ค๋ฉด ์ถฉ๋ถํ ์ดํดํ ์ ์์ด์ผ ํฉ๋๋ค.
๋ค๋ง ์๋ก์ด ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด ๊ผญ class Component๊ฐ ํ์ํ ์ํฉ์ด ์๋๋ผ๋ฉด function Component๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์๋ ์ ํ ์ฝ๋๋ +๋ฒํผ์ ๋๋ฅด๋ฉด ์ซ์๋ฅผ 1์ฉ ํค์์ฃผ๋ ๊ฐ๋จํ Component๋ฅผ ๋ํ๋ด๊ณ ์์ต๋๋ค.
import React, {Component} from 'react';
class Plus{
state = {
number: 0
}
plus = () => {
this.setState({number:this.state.number+1})
}
render(){
const {number} = this.state;
return(
<>
<h1>{number}</h1>
<button onClick={this.plus}>+</button>
</>
);
}
}
export default Plus;
import React, {useState} from 'react';
const Plus = () => {
const [number, setNumber] = useState(0);
const numRef = useRef();
const plus = useCallback(() => {
setNumber(number+1);
});
return (
<>
<h1 ref={numRef}>{number}</h1>
<button onClick={plus}>+</button>
</>
);
}