Hook์ ๊ฐ์
These docs are old and wonโt be updated. Go to react.dev for the new React docs.
These new documentation pages teach React with Hooks:
Hook์ React ๋ฒ์ 16.8๋ถํฐ React ์์๋ก ์๋ก ์ถ๊ฐ๋์์ต๋๋ค. Hook์ ์ด์ฉํ์ฌ ๊ธฐ์กด Class ๋ฐํ์ ์ฝ๋๋ฅผ ์์ฑํ ํ์ ์์ด ์ํ ๊ฐ๊ณผ ์ฌ๋ฌ React์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
import React, { useState } from 'react';
function Example() {
// "count"๋ผ๋ ์๋ก์ด ์ํ ๊ฐ์ ์ ์ํฉ๋๋ค. const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
useState
๋ ์ฐ๋ฆฌ๊ฐ โHookโ์์ ์ฒ์ ๋ฐฐ์ฐ๊ฒ ๋ ํจ์์
๋๋ค. ์ด ์์๋ ๋จ์ง ๋ง๋ณด๊ธฐ์ ๋ถ๊ณผํฉ๋๋ค. ์์ง ์ดํด๋์ง ์์๋ ๊ฑฑ์ ํ์ง ๋ง์ธ์!
๋ค์ ํ์ด์ง์์ Hook์ ๋ํด ๋ฐฐ์ธ ์ ์์ต๋๋ค. ์ด ํ์ด์ง์์๋ ์ฐ๋ฆฌ๊ฐ ์ Hook์ React์ ์ถ๊ฐํ๋์ง, ๊ทธ๋ฆฌ๊ณ Hook์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ๋ ๋ฐ ์ด๋ ํ ๋์์ ์ฃผ๋์ง ์ค๋ช ํ ๊ฒ์ ๋๋ค.
์ฃผ์
React 16.8.0์ Hook์ ์ง์ํ๋ ์ฒซ ๋ฒ์งธ ๋ฐฐํฌ์ ๋๋ค. ์ ๊ทธ๋ ์ด๋ ์ React DOM์ ํฌํจํ ๋ชจ๋ ํจํค์ง์ ์ ๋ฐ์ดํธ๋ฅผ ์งํํด์ฃผ์ธ์. React Native๋ v0.59๋ถํฐ Hook์ ์ง์ํฉ๋๋ค.
์๊ฐ ์์
React Conf 2018์์ Sophie Alpert์ Dan Abramov๊ฐ Hook์ ์๊ฐํ์ต๋๋ค. ์ด์ด์ Ryan Florence๊ฐ Hook์ ์ฌ์ฉํ ์ ํ๋ฆฌ์ผ์ด์
๋ฆฌํฉํ ๋ง์ ๊ณผ์ ์ ๋ณด์ฌ์ฃผ์์ต๋๋ค. ์๋ ์์์์ ํ์ธํด๋ณด์ธ์.
์ด๋ฏธ ์์ฑ๋ ์ฝ๋์ ํ์ํ ๋ณํ์ฌํญ์ ์์ต๋๋ค.
์๊ธฐํ๊ธฐ์ ์์, Hook์ ํน์ง์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ ํ์ ์ฌ์ฉ ๊ธฐ์กด์ ์ฝ๋๋ฅผ ๋ค์ ์์ฑํ ํ์ ์์ด ์ผ๋ถ์ ์ปดํฌ๋ํธ๋ค ์์์ Hook์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋น์ฅ Hook์ด ํ์ ์๋ค๋ฉด, Hook์ ์ฌ์ฉํ ํ์๋ ์์ต๋๋ค.
- 100% ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ Hook์ ํธํ์ฑ์ ๊นจ๋จ๋ฆฌ๋ ๋ณํ๊ฐ ์์ต๋๋ค.
- ํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅ Hook์ ๋ฐฐํฌ v16.8.0์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
React์์ Class๋ฅผ ์ ๊ฑฐํ ๊ณํ์ ์์ต๋๋ค. Hook์ ์ ์ง์ ์ ์ฉ ์ ๋ต์ ๋ํด ์๋ ์์ญ ํ์ด์ง์์ ์ฝ์ ์ ์์ต๋๋ค.
Hook์ ์๊ณ ์๋ React ์ปจ์ ์ ๋์ฒดํ์ง ์์ต๋๋ค. ๋์ ์, Hook์ props, state, context, refs, ๊ทธ๋ฆฌ๊ณ lifecycle์ ๊ฐ์ React ๊ฐ๋ ์ ์ข ๋ ์ง๊ด์ ์ธ API๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ํ Hook์ ์ด ๊ฐ๋ ๋ค์ ์ฎ๊ธฐ ์ํด ์๋ก์ด ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
๋จ์ง Hook์ ๋ํด ๋ฐฐ์ฐ๊ธธ ์ํ๋ค๋ฉด, ๋ค์ ํ์ด์ง๋ก ๋ฐ๋ก ์ด๋ํด๋ ๋ฉ๋๋ค. ๋ํ ์ ์ฐ๋ฆฌ๊ฐ Hook์ ์ถ๊ฐํ๋์ง, ๊ทธ๋ฆฌ๊ณ ์ด๋ป๊ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค์ ์์ฑํ ํ์ ์์ด ์ด๋ป๊ฒ Hook์ ์ด์ฉํ๋์ง ์๊ณ ์ถ๋ค๋ฉด ์ด ํ์ด์ง๋ฅผ ๊ณ์ ์ฝ์ ํ์๊ฐ ์์ต๋๋ค.
๋๊ธฐ
Hook์ ์ฐ๋ฆฌ๊ฐ 5๋ ๊ฐ React๋ก ์ปดํฌ๋ํธ๋ฅผ ์์ฑํ๊ณ ์ ์งํ๋ ๋์ ๋ถ๋ชํ๋ ์ ๋ง์ ๋ฌธ์ ๋ค์ ํด๊ฒฐํ์ต๋๋ค. React๋ฅผ ๋ฐฐ์ฐ๋ ์ค์ด๋ , ๋งค์ผ ์ฌ์ฉํ๋ , ์ฌ์ง์ด ๋น์ทํ ์ปดํฌ๋ํธ ๋ชจ๋ธ๊ณผ ํจ๊ป ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ํธํ๋ ์ง ๊ฐ์, ์ฌ์ฉ์๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์ธ์ํด ์์ ๊ฒ ์ ๋๋ค.
์ปดํฌ๋ํธ ์ฌ์ด์์ ์ํ ๋ก์ง์ ์ฌ์ฌ์ฉํ๊ธฐ ์ด๋ ต์ต๋๋ค.
React๋ ์ปดํฌ๋ํธ๊ฐ์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๋ก์ง์ ๋ถ์ด๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ์ง ์์ต๋๋ค. (์๋ฅผ ๋ค์ด, ์คํ ์ด์ ์ฐ๊ฒฐํ๋ ๊ฒ) ์ด์ ๋ถํฐ React๋ฅผ ์ฌ์ฉํด์๋ค๋ฉด, render props์ด๋ ๊ณ ์ฐจ ์ปดํฌ๋ํธ์ ๊ฐ์ ํจํด์ ํตํด ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์ต์ํ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฐ ํจํด์ ์ฌ์ฉ์ ์ปดํฌ๋ํธ์ ์ฌ๊ตฌ์ฑ์ ๊ฐ์ํ๋ฉฐ, ์ฝ๋์ ์ถ์ ์ ์ด๋ ต๊ฒ ๋ง๋ญ๋๋ค. React ๊ฐ๋ฐ์ ๋๊ตฌ์์ React ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณธ๋ค๋ฉด, providers, consumers, ๊ณ ์ฐจ ์ปดํฌ๋ํธ, render props ๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ์ถ์ํ์ ๋ํ ๋ ์ด์ด๋ก ๋๋ฌ์ธ์ธ โ๋ํผ ์ง์ฅ(wrapper hell)โ์ ๋ณผ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ๊ฐ๋ฐ์ ๋๊ตฌ์์ ๊ฑธ๋ฌ๋ผ ์ ์์ง๋ง, ์ด ๋ฌธ์ ์ ์์ ์ ์ฌ์ธต์ ์ด์์ต๋๋ค. React๋ ์ํ ๊ด๋ จ ๋ก์ง์ ๊ณต์ ํ๊ธฐ ์ํด ์ข ๋ ์ข์ ๊ธฐ์ด ์์๊ฐ ํ์ํ์ต๋๋ค.
Hook์ ์ฌ์ฉํ๋ฉด ์ปดํฌ๋ํธ๋ก๋ถํฐ ์ํ ๊ด๋ จ ๋ก์ง์ ์ถ์ํํ ์ ์์ต๋๋ค. ์ด๋ฅผ ์ด์ฉํด ๋ ๋ฆฝ์ ์ธ ํ ์คํธ์ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค. Hook์ ๊ณ์ธต์ ๋ณํ ์์ด ์ํ ๊ด๋ จ ๋ก์ง์ ์ฌ์ฌ์ฉํ ์ ์๋๋ก ๋์์ค๋๋ค. ์ด๊ฒ์ ๋ง์ ์ปดํฌ๋ํธ ํน์ ์ปค๋ฎค๋ํฐ ์ฌ์ด์์ Hook์ ๊ณต์ ํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค์ด์ค๋๋ค.
์ฐ๋ฆฌ๋ ์์ ๋ง์ Hook์ ๊ตฌ์ถํ๋ ๋ฒ์ ๋ํด ์ข ๋ ์์๋ณผ ๊ฒ์ ๋๋ค.
๋ณต์กํ ์ปดํฌ๋ํธ๋ค์ ์ดํดํ๊ธฐ ์ด๋ ต์ต๋๋ค.
์ฐ๋ฆฌ๋ ๋๋ก ๊ฐ๋จํ๊ฒ ์์ํ์ง๋ง ๊ด๋ฆฌํ๊ธฐ๊ฐ ํ๋ค์ด์ง๋ ์ํ ๊ด๋ จ ๋ก์ง๋ค๊ณผ ์ฌ์ด๋ ์ดํํธ๊ฐ ์๋ ์ปดํฌ๋ํธ๋ค์ ์ ์ง๋ณด์ํด์ผ ํฉ๋๋ค. ๊ฐ ์๋ช
์ฃผ๊ธฐ ๋ฉ์๋์๋ ์์ฃผ ๊ด๋ จ ์๋ ๋ก์ง์ด ์์ฌ๋ค์ด๊ฐ๊ณ ๋ ํฉ๋๋ค. ์์๋ก componentDidMount
์ componentDidUpdate
๋ ์ปดํฌ๋ํธ์์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ์์
์ ์ํํ ๋ ์ฌ์ฉ ๋์ด์ผ ํ์ง๋ง, ๊ฐ์ componentDidMount
์์ ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ์ค์ ํ๋ ๊ฒ๊ณผ ๊ฐ์ ๊ด๊ณ์๋ ๋ก์ง์ด ํฌํจ๋๊ธฐ๋ ํ๋ฉฐ, componentWillUnmount
์์ cleanup ๋ก์ง์ ์ํํ๊ธฐ๋ ํฉ๋๋ค. ํจ๊ป ๋ณ๊ฒฝ๋๋ ์ํธ ๊ด๋ จ ์ฝ๋๋ ๋ถ๋ฆฌ๋์ง๋ง ์ด์ ์ฐ๊ด ์๋ ์ฝ๋๋ค์ ๋จ์ผ ๋ฉ์๋๋ก ๊ฒฐํฉํฉ๋๋ค. ์ด๋ก ์ธํด ๋ฒ๊ทธ๊ฐ ์ฝ๊ฒ ๋ฐ์ํ๊ณ ๋ฌด๊ฒฐ์ฑ์ ๋๋ฌด๋ ์ฝ๊ฒ ํด์นฉ๋๋ค.
์์ ๊ฐ์ ์์์์, ์ํ ๊ด๋ จ ๋ก์ง์ ํ ๊ณต๊ฐ์์ ๋ฌถ์ฌ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฐ ์ปดํฌ๋ํธ๋ค์ ์๊ฒ ๋ถ๋ฆฌํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ฉฐ ํ ์คํธํ๊ธฐ๋ ์ด๋ ต์ต๋๋ค. ์ด ๋๋ฌธ์ ๋ง์ ์ฌ์ฉ์๋ค์ React๋ฅผ ๋ณ๋์ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํจ๊ป ๊ฒฐํฉํด์ ์ฌ์ฉํด์์ต๋๋ค. ๊ทธ๋ฌ๋, ์ด๋ฐ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ข ์ข ๋๋ฌด ๋ง์ ์ถ์ํ๋ฅผ ํ๊ณ , ์๋ก ๋ค๋ฅธ ํ์ผ๋ค ์ฌ์ด์์ ๊ฑด๋๋ฐ๊ธฐ๋ฅผ ์๊ตฌํ๋ฉฐ ์ปดํฌ๋ํธ ์ฌ์ฌ์ฉ์ ๋์ฑ๋ ์ด๋ ต๊ฒ ๋ง๋ค์์ต๋๋ค.
์ด๊ฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ์ํด, ์๋ช ์ฃผ๊ธฐ ๋ฉ์๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ชผ๊ฐ๋ ๊ฒ ๋ณด๋ค๋, Hook์ ํตํด ์๋ก ๋น์ทํ ๊ฒ์ ํ๋ ์์ ํจ์์ ๋ฌถ์์ผ๋ก ์ปดํฌ๋ํธ๋ฅผ ๋๋๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. (๊ตฌ๋ ์ค์ ๋ฐ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๋ ๊ฒ๊ณผ ๊ฐ์ ๋ก์ง) ๋ํ ์ด๋ฌํ ๋ก์ง์ ์ถ์ ์ ์ฝ๊ฒ ํ ์ ์๋๋ก ๋ฆฌ๋์๋ฅผ ํ์ฉํด ์ปดํฌ๋ํธ์ ์ง์ญ ์ํ ๊ฐ์ ๊ด๋ฆฌํ๋๋ก ํ ์ ์์ต๋๋ค.
์ด์ ๋ํด Effect Hook์์ ๋ ์์๋ณผ ๊ฒ์ ๋๋ค.
Class์ ์ฌ๋๊ณผ ๊ธฐ๊ณ๋ฅผ ํผ๋์ํต๋๋ค.
React ์์์ Class ์ฌ์ฉ์ ์ํด์๋ JavaScript์ this
ํค์๋๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง ์์์ผ๋ง ํฉ๋๋ค. JavaScript์ this
ํค์๋๋ ๋๋ถ๋ถ์ ๋ค๋ฅธ ์ธ์ด์์์๋ ๋ค๋ฅด๊ฒ ์๋ํจ์ผ๋ก ์ฌ์ฉ์์๊ฒ ํฐ ํผ๋์ ์ฃผ์์ผ๋ฉฐ, ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ๊ณผ ๊ตฌ์ฑ์ ๋งค์ฐ ์ด๋ ต๊ฒ ๋ง๋ค๊ณ ๋ ํ์ต๋๋ค. ๋ํ class์ ์ฌ์ฉ์ ์ํด ์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ๋ฑ๋ก๋๋ ๋ฐฉ๋ฒ์ ์ ํํ ํ์
ํด์ผ ํ์ผ๋ฉฐ, ์ด๋ ES2022 public class fields๊ฐ ์์ ๋ ์ฝ๋๋ฅผ ๋งค์ฐ ์ฅํฉํ๊ฒ ๋ง๋ค์์ต๋๋ค. ์ฌ์ฉ์๋ค์ props, state, ๊ทธ๋ฆฌ๊ณ top-down ๋ฐ์ดํฐ ํ๋ฆ์ ์๋ฒฝํ๊ฒ ํ๊ณ ๋, Class์ ์ดํด์๋ ์ด๋ ค์์ ๊ฒช๊ณ ๋ ํ์ต๋๋ค. React ๋ด์ ํจ์์ Class ์ปดํฌ๋ํธ์ ๊ตฌ๋ณ, ๊ฐ ์์์ ์ฌ์ฉ ํ์ด๋ฐ ๋ฑ์ ์๋ จ๋ React ๊ฐ๋ฐ์ ์ฌ์ด์์๋ ์๊ฒฌ์ด ์ผ์นํ์ง ์์ต๋๋ค.
React๋ ์ง๋ 5๋ ๋์ ๋๋ฆฌ ์ฌ์ฉ๋์ด ์์ผ๋ฉฐ, React์ ๊ฐ๋ฐ์ง์ 5๋ ๋ค์๋ React๊ฐ ์ง๊ธ๊ณผ ๊ฐ์ด ๋๋ฆฌ ์ด์ฉ๋๊ธธ ์ํฉ๋๋ค. Svelte, Angular, Glimmer ๋ฑ์์ ๋ณด์ฌ์ฃผ๋ฏ์ด, ์ปดํฌ๋ํธ๋ฅผ ๋ฏธ๋ฆฌ ์ปดํ์ผํด๋๋ ๋ฐฉ์์๋ ๋์ ์ ์ฌ๋ ฅ์ด ์์ต๋๋ค. ํ ํ๋ฆฟ์ ํ์ ํ์ง ์๋๋ค๋ฉด ๋ ๊ทธ๋ ๊ณ ์. ๊ฐ๋ฐ์ง์ ์ต๊ทผ Prepack์ ์ฌ์ฉํ ์ปดํฌ๋ํธ folding์ ๋ํด์ ์คํํด์๊ณ ๊ธ์ ์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์์ต๋๋ง, Class ์ปดํฌ๋ํธ๊ฐ ์ด๋ฌํ ์ต์ ํ๋ฅผ ๋ ๋๋ฆฐ ๊ฒฝ๋ก๋ก ๋๋๋ฆฌ๋ ์๋ํ์ง ์์ ํจํด์ ์ฅ๋ คํ ์ ์๋ค๋ ๊ฒ์ ๋ฐ๊ฒฌํ์ต๋๋ค. Class๋ ์ต๊ทผ ์ฌ์ฉ๋๋ ๋๊ตฌ์์๋ ๋ง์ ๋ฌธ์ ๋ฅผ ์ผ์ผํต๋๋ค. ์๋ฅผ ๋ค์ด Class๋ ์ฝ๋์ ์ต์ํ๋ฅผ ํ๋ค๊ฒ ๋ง๋ค๊ณ , ํซ ๋ฆฌ๋ก๋ฉ์ ๊นจ์ง๊ธฐ ์ฝ๊ณ ์ ๋ขฐํ ์ ์๊ฒ ๋ง๋ญ๋๋ค. ์ฐ๋ฆฌ๋ ์ฝ๋๊ฐ ์ต์ ํ ๊ฐ๋ฅํ ๊ฒฝ๋ก์์ ์ ์ง๋ ๊ฐ๋ฅ์ฑ์ด ๋ ๋์ API๋ฅผ ์ ๊ณตํ๊ธธ ์ํ์์ต๋๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด, Hook์ Class์์ด React ๊ธฐ๋ฅ๋ค์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ ์ํฉ๋๋ค. ๊ฐ๋ ์ ์ผ๋ก React ์ปดํฌ๋ํธ๋ ํญ์ ํจ์์ ๋ ๊ฐ๊น์ต๋๋ค. Hook์ React์ ์ ์ ์ ํฌ์ํ์ง ์๊ณ ํจ์์ ์ฌ์ฉ์ ๊ถ์ฅํฉ๋๋ค. Hook์ ๋ช ๋ นํ ์ฝ๋๋ก ํด๊ฒฐ์ฑ ์ ์ฐพ์ ์ ์๊ฒ ํด์ฃผ๋ฉฐ ๋ณต์กํ ํจ์ํ ๋๋ ๋ฐ์ํ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ ์ ๋ฐฐ์ฐ๋๋ก ์๊ตฌํ์ง ์์ต๋๋ค.
์์
Hook ์ดํด๋ณด๊ธฐ๋ Hook์ ๋ฐฐ์ฐ๋๋ฐ ์ข์ ๊ณต๊ฐ์ ๋๋ค.
์ ์ง์ ์ ์ฉ ์ ๋ต
์์ฝ: React๋ก๋ถํฐ Class๋ฅผ ์ ๊ฑฐํ ๊ณํ์ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ React๋ฅผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์๋ค์ด ํ๋ก๋ํธ์ ๊ฐ๋ฐ์ ๋ ์ด์ ์ ๋ง์ถ๊ณ ์์ผ๋ฉฐ, ๋ณ๊ฒฝ๋๋ API์ ์์๋ค์ ์๋กญ๊ฒ ๊ณต๋ถํ ์๊ฐ์ด ์๋ค๋ ๊ฑธ ์๊ณ ์์ต๋๋ค. Hook์ ๋งค์ฐ ์๋ก์ด ๊ธฐ์ ์ด๋ฉฐ, Hook์ ๋ฐฐ์ฐ๊ฑฐ๋ ์ ์ฉํ๊ธฐ ์ ์ ๋ ๋ง์ ์์์ ์์ต์๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ ๋์ ์๋ ์์ต๋๋ค.
๋ํ React์ ์ถ๊ฐ๋๋ ์๋ก์ด ๊ธฐ๋ฅ์ ๋ํ ๊ธฐ์ค์ ์ด ๋งค์ฐ ๋๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค. ๊ถ๊ธํดํ๋ ๋ ์๋ค์ ์ํด ๋๊ธฐ๋ถ์ฌ์ ๋ํ ๊ตฌ์ฒด์ ์ธ ๋ด์ฉ์ ๋ด๊ณ ์๋ ์์ธํ RFC๋ฅผ ์ค๋นํ๊ณ ํน์ ์ค๊ณ ๊ฒฐ์ ๋ฐ ๊ด๋ จ ์ ํ ๊ธฐ์ ์ ๋ํ ์ถ๊ฐ์ ์ธ ๊ด์ ์ ์ ๊ณตํฉ๋๋ค.
๊ฒฐ์ ์ ์ผ๋ก, Hook์ ์กด์ฌํ๋ ์ฝ๋์ ํจ๊ป ๋๋ํ ์๋ํจ์ผ๋ก์จ ์ ์ง์ ์ผ๋ก ์ ์ฉํ ์ ์์ต๋๋ค. Hook์ ์ ์ฉ์ ์๋๋ฅผ ํ์๋ ์์ต๋๋ค. ์ด๋ฏธ ์ฌ์ฉ์ค์ธ ๋ณต์กํ Class ์ปดํฌ๋ํธ๋ค์ ๋ํ โํฐ ๋ฆฌํฉํ ๋งโ์ ํผํ๊ธฐ๋ฅผ ๊ถ์ฅํฉ๋๋ค. โHook์ ์ ์ฉํ๊ธฐโ์๋ ๊ณ ๋ฏผ์ ์๊ฐ์ด ํ์ํฉ๋๋ค. ๊ฒฝํ์ ํ ๋๋ก ํ์ฌ, ์๋์ ์ผ๋ก ์ค์์ฑ์ด ๋ํ ์ ์ปดํฌ๋ํธ์์ Hook์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ต๊ณ ์ ์ฐ์ต์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๋ฌ๋ถ์ ๋ชจ๋ ํ์์ด Hook์ ๋ํด ์์ ๊ฐ์ ๋๋ผ๋์ง ํ์ธํ๋ ๊ฒ ์ข์ต๋๋ค. Hook์ ์ด์ฉ ํ, ๊ธ์ ์ , ๋ถ์ ์ ์๊ฒฌ ๋ชจ๋ ์๊ฒฌ ๋ณด๋ด๊ธฐ๋ฅผ ์ด์ฉํด ๋ณด๋ด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
React์ ๊ฐ๋ฐ์๋ค์ ํ์ฌ ์ฌ์ฉ์ค์ธ Class ์ฌ๋ก๋ฅผ Hook์ผ๋ก ๊ต์ฒดํ๋ ๊ฒ์ ์ผ๋์ ๋๊ณ ๋ ์์ง๋ง, ๋ฏธ๋์๋ ๊ณ์ Class ์ปดํฌ๋ํธ๋ค์ ์ง์ํ ์์ ์ ๋๋ค. ํ์ด์ค๋ถ์ ์๋ง ๊ฐ์ Class ์ปดํฌ๋ํธ๋ค์ ์์ฑํ์ง๋ง ์ด๋ฅผ ์ฌ์์ฑํ ๊ณํ์ ์์ต๋๋ค. ๋์ ์, ์๋ก์ด ์ฝ๋์์ ๊ธฐ์กด ์ฝ๋์ ๋๋ํ Hook์ ์ฌ์ฉํ ๊ณํ์ ๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
Hook FAQ ํ์ด์ง์์ Hook์ ๋ํ ์์ฃผ ๋ฌป๋ ์ง๋ฌธ๊ณผ ๋ต๋ณ์ ํ์ธํ ์ ์์ต๋๋ค.
๋ค์ ๋จ๊ณ
์ด ํ์ด์ง๋ฅผ ๋ค ์ฝ์์ ๋, Hook์ด ํด๊ฒฐํ๋ ค๋ ๋ฌธ์ ๋ค์ ๋ํ ๋๋ต์ ์ธ ๊ฐ๋ ์ ์ดํดํ๊ณ ์์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์์ง ๊ตฌ์ฒด์ ์ผ๋ก ๋ช ํํ์ง ์์ ๊ฒ์ ๋๋ค. ๊ฑฑ์ ํ์ง ๋ง์ธ์! ๋ค์ ํ์ด์ง๋ก ๊ฐ์ ์์๋ฅผ ํตํด์ Hook์ ๋ํด ๋ฐฐ์ ๋ด ์๋ค!