[FE] React - (3)

365.48kmยท2022๋…„ 12์›” 15์ผ
0

[FE Study] React

๋ชฉ๋ก ๋ณด๊ธฐ
3/3
post-thumbnail

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๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค์œผ ใ…ฃํฌ๊ธฐ๊ฐ€ ์„œ๋ฒ„์—์„œ ๊ฒฐ์ •๋˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ ์ž ์„œ๋ฒ„์—์„œ ์–ด๋–ค ์ž์›์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ์ •์˜ํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ์—์„œ ๋žœ๋”๋ง์ด ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

profile
์ด๊ฒŒ ๋งˆ์ฆ๊นŒ?

0๊ฐœ์˜ ๋Œ“๊ธ€