React์ TypeScript๋ฅผ ํจ๊ป ์ฌ์ฉํ ๋, ํํ ๋ณด๊ฒ ๋๋ ํ์
์ด ํ๋ ์๋ค. ๋ฐ๋ก React.FC ๋๋ React.FunctionComponent์ด๋ค.
์ด ๊ธ์์๋ React.FC๊ฐ ๋ฌด์์ธ์ง, ์ด๋ค ์ญํ ์ ํ๋์ง, ์ค์ ํ์
์์๋ ์ด๋ค ๋ฐฉ์์ ์ ํธํ๋์ง, ๊ทธ๋ฆฌ๊ณ ๊ตฌ์ฒด์ ์ธ ์์๋ฅผ ํตํด ์ ๋ฆฌํด๋ณด์.
React.FC๋ Function Component์ ํ์
์ ์๋ฅผ ๋์์ฃผ๋ ์ ๋ค๋ฆญ(Generic) ํ์
์ด๋ค.
์ฆ, ์ปดํฌ๋ํธ๊ฐ ์ด๋ค props๋ฅผ ๋ฐ์์ง ๋ช
์ํ ์ ์๋๋ก ๋์์ฃผ๋ ํ์
๋์ฐ๋ฏธ๋ผ๊ณ ์ดํดํ๋ฉด ๋๋ค.
type Props = {
name: string;
};
const Hello: React.FC<Props> = ({ name }) => {
return <div>Hello, {name}</div>;
};
์ ์ฝ๋์์ Hello ์ปดํฌ๋ํธ๋ name์ด๋ผ๋ ๋ฌธ์์ด props๋ฅผ ๋ฐ์ผ๋ฉฐ, React.FC<Props>๋ฅผ ํตํด ์ด ํ์
์ ๋ช
์ํ๊ณ ์๋ค.
| ์ฅ์ | ์ค๋ช |
|---|---|
๐น children ์๋ ํฌํจ | ์ปดํฌ๋ํธ ๋ด๋ถ์์ props.children์ ๋ฐ๋ก ์ฌ์ฉํ ์ ์์ |
| ๐น ๋ช ์์ ์ธ ๋ฐํ ํ์ | ReactElement๋ฅผ ๋ฐํํ๋ ๊ฑธ ๋ณด์ฅํด์ค |
| ๐น ์ด๊ธฐ ํ์ต์์๊ฒ ์ง๊ด์ | ํ๋์ "์ด๊ฑด ํจ์ํ ์ปดํฌ๋ํธ์ผ"๋ผ๋ ๊ฑธ ์ ์ ์์ |
| ๋จ์ | ์ค๋ช |
|---|---|
๐ธ children ์๋ ํฌํจ์ผ๋ก ์ธํ ์ค๋ฅ | ์ฌ์ฉํ์ง ์๋ ์ปดํฌ๋ํธ์๋ children์ด ํ์ฉ๋จ (์ค์ ๊ฐ๋ฅ) |
| ๐ธ ์ ๋๋ฆญ ์ฌ์ฉ ์ ์ฝ | <T> ๋ฑ์ ์ ๋๋ฆญ์ ์ ์ฉํ๊ธฐ๊ฐ ๋ฒ๊ฑฐ๋ก์ |
| ๐ธ ํจ์์ ๋ฐํ๊ฐ ํ์ ์ ์ค๋ณต ๋ช ์ | TypeScript๊ฐ ์ถ๋ก ๊ฐ๋ฅํ ๊ฐ์ ๊ตณ์ด ๋ช ์ํ ํ์ ์์ |
type Props = {
name: string;
};
const MyComponent: React.FC<Props> = (props) => {
return <div>{props.name}</div>;
};
type Props = {
name: string;
};
const MyComponent = ({ name }: Props) => {
return <div>{name}</div>;
};
| ๊ธฐ์ค | React.FC | ์ง์ ํ์ ๋ช ์ |
|---|---|---|
children ์๋ ํฌํจ | โ O | โ ๋ช ์ ํ์ |
| ํ์ ์ถ๋ก ์ ์ฐ์ฑ | โ ์ ํ ์์ | โ ์์ ๋ก์ |
| ์ฝ๋ ๊ธธ์ด | โ ๊ธธ์ด์ง | โ ๊ฐ๊ฒฐํจ |
| ์ต์ ์ถ์ธ | โ ์ง์ | โ ์ ํธ๋จ |
๐ก ๋๋ถ๋ถ์ ๊ธฐ์ , ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๊ณต์ ๋ฌธ์์์๋ React.FC ์ฌ์ฉ์ ์ง์ํ๋ ์ถ์ธ๋ค.
ํนํchildren์๋ ํฌํจ์ผ๋ก ๋ฐ์ํ ์ ์๋ ๋ถํ์ํ ์ค๋ฅ ๋ฐฉ์ง์ ํ์ ์ถ๋ก ์ ์ฐ์ฑ ํ๋ณด๊ฐ ํฐ ์ด์ ๋ค.
| ์ํฉ | React.FC ์ฌ์ฉ ์ฌ๋ถ |
|---|---|
| ๊ฐ๋จํ ํ๋กํ ํ์ ๊ฐ๋ฐ | โ ๊ด์ฐฎ์ |
children ํฌํจํ ์ปดํฌ๋ํธ ์์ฑ ์ | โ ๋ช ์ ์์ด ์ฌ์ฉ ๊ฐ๋ฅ |
| ์ ๋๋ฆญ ์ฌ์ฉ์ด ํ์ํ ์ํฉ | โ ์ง์ |
| ๊ท๋ชจ ์๋ ํ ํ๋ก์ ํธ | โ ๊ฐ๊ธ์ ๋ช ์์ ๋ฐฉ์ ์ฌ์ฉ ๊ถ์ฅ |
React.FC๋ ํ์
์คํฌ๋ฆฝํธ์์ ํจ์ํ ์ปดํฌ๋ํธ๋ฅผ ์ฝ๊ฒ ์ ์ธํ ์ ์๋๋ก ๋์์ฃผ๋ ์ ๋ค๋ฆญ ํ์
์ด๋ค.
ํ์ง๋ง children ์๋ ํฌํจ๊ณผ ์ ๋ค๋ฆญ ์ ์ฝ ๋๋ฌธ์ ์์ฆ์ ์ง์ Props๋ฅผ ๋ช
์ํ๋ ๋ฐฉ์์ ์ ํธํ๋ค.
์ํฉ์ ๋ฐ๋ผ ์ ์ ํ ์ ํํ๋, ํ ๋ด ์ฝ๋ ์คํ์ผ ๊ฐ์ด๋์ ๋ง์ถฐ ํต์ผํ๋ ๊ฒ์ด ์ค์ํ๋ค.
React.FC๋ ํธ๋ฆฌํ์ง๋ง, ๋ ๋ช ์์ ์ด๊ณ ์ ์ฐํ ์ง์ Props ํ์ ์ ์ธ ๋ฐฉ์์ด ํ์ฌ TypeScript + React ๊ฐ๋ฐ์์ ๋ ๋ง์ด ์ฌ์ฉ๋๋ค.