1. ๋ฆฌ์กํธ Hooks์ ์ฅ์ ์?
Key Ponint ๐ก Hook์ ์ฅ์ ์ ๋ก์ง์ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ๊ณ ๊ด๋ฆฌ๊ฐ ์ฝ๋ค.
- ํจ์ ์์์ ๋ค๋ฅธ ํจ์๋ฅผ ํธ์ถํ๋ ๊ฒ์ผ๋ก ์๋ก์ด hook์ ๋ง๋ค์ด ๋ณผ ์ ์๋ค.
- ๊ธฐ์กด์ class component๋ ์ฌ๋ฌ ๋จ๊ณ์ ์์์ผ๋ก ์ ๋ฐ์ ์ผ๋ก ๋ณต์ก์ฑ๊ณผ ์ค๋ฅ ๊ฐ๋ฅ์ฑ์ ์ฆ๊ฐ์์ผฐ๋ค.
- ํ์ง๋ง, function component์ hooks์ ๋์
๋๋ฉด์ class component๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ธฐ๋ฅ์ ๋ชจ๋ ์ฌ์ฉํ ์ ์์์ ๋ฌผ๋ก ์ด๊ณ , ๊ธฐ์กด class component ๋ณต์ก์ฑ, ์ฌ์ฌ์ฉ์ฑ์ ๋จ์ ์ ํด๊ฒฐํ ์ ์๋ค.
2. class component์ function component์ ์ฐจ์ด
Key Ponint ๐ก ๋ผ์ดํ ์ฌ์ดํด์ ์ฐจ์ด
- class Component๋ ์ฌ๋ฌ ๋จ๊ณ์ ์์์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- ๊ทธ๋ฆฌํ์ฌ ๋ณต์ก์ฑ๊ณผ ์ค๋ฅ ๊ฐ๋ฅ์ฑ์ ์ฆ๊ฐ ์์ผฐ์ต๋๋ค.
- ์ด๋ก ์ธํด Function Component๊ฐ ํ์ํ๊ฒ ๋์๋ค.
- class component๋ ๋ผ์ดํ ์ฌ์ดํด์ ๊ฐ์ง๋ฉฐ ์ด๋ก์ธํด ๊ฐ๊ฐ ์๋ช
์ฃผ๊ธฐ ๋ฉ์๋์ ๋ํด ์๊ณ ์์ด์ผ ํฉ๋๋ค.
- ํ์ง๋ง function component๋ ์ด๋ฌํ ๊ธฐ๋ฅ์ hook์ ์ฌ์ฉํ์ฌ ์๋ช
์ฃผ๊ธฐ์ ์ํ๋ ๋์์ ํ๊ฒ ํฉ๋๋ค.
3. Props Drilling์ด๋?
Key Ponint ๐ก ํ์ ์ปดํฌ๋ํธ๊ฐ ๊น์ด์ง๋ ๋ฐ์ํ๋ค.
- ๋ฆฌ์กํธ์ ์ปดํฌ๋ํธ ํธ๋ฆฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ธฐ ์ํด์ ํ์ํ ๊ณผ์ ์ ์๋ฏธํ๋ค.
- ์์ ์ปดํฌ๋ํธ์์ ํ์ ์ปดํฌ๋ํธ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ๋, ์์ ์ปดํฌ๋ํธ์ ๋จ๊ณ๊ฐ ๊น์ด์ง ์ ๋ก Props Drilling์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
- ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ด๋ ค์์ง๊ฒ ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ ์ญ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ํ์๊ฐ ์๊ธฐ๊ฒ ๋์๊ณ ,
์ฌ๋ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๊ธฐ๊ฒ ๋์๋ค.
- context, redux, recoil mobx ๋ฑ์ด ์๋ค.
4. forwardRef๋?
Key Ponint ๐ก ํ์ ์ปดํฌ๋ํธ๋ก useRef๋ฅผ ์ ๋ฌํ๊ธฐ ์ํด์ ์ฌ์ฉ๋๋ค.
ํ์ ์ปดํฌ๋ํธ๋ฅผ forewardRef๋ก ๊ฐ์ธ์ค๋ค, props, ref ์ ๊ฐ์ด useRef๋ฅผ ๋ฐ์ ์ ์๊ฒ ๋๋ค.
5. ๊ณ ์ฐจ ์ปดํฌ๋ํธ
Key Ponint ๐ก ๊ณ ์ฐจ ์ปดํฌ๋ํธ(HOC, Higher Order Component)๋ ์ปดํฌ๋ํธ ๋ก์ง์ ์ฌ์ฌ์ฉํ๊ธฐ ์ํ React์ ๊ณ ๊ธ ๊ธฐ์ ์ด๋ค.
- ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ ธ์ ์ ์ปดํฌ๋ํธ๋ฅผ ๋ฐํํ๋ ํจ์๋ก, ์ปดํฌ๋ํธ๋ฅผ ์ธ์๋ก ๋ฐ๊ฑฐ๋ ๋ฐํํ๋ค.
const EnhancedComponent = higherOrderComponent(WrappedComponent);
1) ๊ณ ์ฐจ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ๋ ์ด์ ?
๋ฆฌ์กํธ ๊ณต์๋ฌธ์์์๋ ํก๋จ ๊ด์ฌ์ฌ(Cross-Cutting Concerns) ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ์ฐ์ธ๋ค๊ณ ์ธ๊ธ์ด ๋์ด ์๋ค.
6. ๊ณ ์ฐจ ์ปดํฌ๋ํธ(HOC) vs ํ
(Hooks)
๊ณต์ ๋ฌธ์์์๋ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ Hooks๋ก ๋์ฒด ๊ฐ๋ฅํ๋ค๊ณ ๋งํฉ๋๋ค.
ํด๋์ค ์ปดํฌ๋ํธ๋ก๋ง ๊ฐ๋ฐํด์ผ ํ์ ๋, ์ฃผ๋ก ๊ณ ์ฐจ ์ปดํฌ๋ํธ๋ ์๋ช
์ฃผ๊ธฐ์ ์ข
์์ ์ด์ง ์์ผ๋ฉด์ ์ค๋ณต๋ ์ฝ๋๋ฅผ ๋ถ๋ฆฌํ๊ธฐ ์ํด์ ์ฌ์ฉํ์ต๋๋ค. ๊ทธ๋ฌ๋ค๋ณด๋ HOC๊ฐ ๋ฐํํ๋ ์ค๋ณต๋๋ ์ปดํฌ๋ํธ ๋ ์ด์ด๋ค์ด ์์ด๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
ํ์ง๋ง Hooks๊ฐ ๋ฆด๋ฆฌ์ฆ๋๋ฉด์ ์๋ช
์ฃผ๊ธฐ๊ฐ ๋จ์ํ ๋์๊ณ , ๊ณตํต์ ์ฝ๋ ๋ถ๋ฆฌ๊ฐ ํ์ํ ๊ฒฝ์ฐ์๋ custom hook์ ์ฌ์ฉํ๋ฉด ํด๊ฒฐ ํ ์ ์๊ฒ ๋์์ต๋๋ค. custom hooks๋ฅผ ์ฌ์ฉํ๋ฉด ์ปดํฌ๋ํธ๊ฐ ์ค์ฒฉ ๋์ง ์์์ hoc์์ ๋ฐ์ํ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐ ํ ์ ์์ต๋๋ค.
๋ ๊ตฌ์ฒด์ ์ผ๋ก ์ ๋ฆฌํด๋ณด์๋ฉด,
5. Apollo
Key Ponint ๐ก REST API๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆฌ์์ค์ผ ใ
ฃํฌ๊ธฐ๊ฐ ์๋ฒ์์ ๊ฒฐ์ ๋๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์ ์๋ฒ์์ ์ด๋ค ์์์ ์ฌ์ฉํ ์ ์๋์ง๋ฅผ ์ ์ํ๊ณ , ํด๋ผ์ด์ธํธ์์ ๋๋๋ง์ด ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ ๋ฐฉ์์ด๋ค.