TIL 2

์†œ์ฃผ๋จนยท2022๋…„ 8์›” 7์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
2/6
post-custom-banner

๐Ÿ“ขNotice

  • ๊ตฌ์–ด์ฒด๋กœ ์ž‘์„ฑ๋˜์–ด ์žˆ์–ด ์•Œ์•„๋ณด๊ธฐ ํž˜๋“ค ์ˆ˜ ์žˆ์Œ
  • ๋ฐ€๋ ค์žˆ๋˜ TIL์„ ์ •๋ฆฌํ•ด๋†“์€ ๊ฒƒ
  • ์–ธ์ œ ๋ฐฐ์› ๋Š”์ง€ ๋‚ ์งœ๊ฐ€ ๊ธฐ์–ต ์•ˆ๋‚จ (์•„๋งˆ๋„ 7์›” 22์ผ)



๐Ÿ“Œ ํ•จ์ˆ˜ํ˜•, ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ

๐Ÿ“– ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ

  • ์ƒํƒœ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ณ , ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ์˜ ์ƒ๋ช… ์ฃผ๊ธฐ(LifeCycle) ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑ ๊ฐ€๋Šฅ
  • LifCycle

๐Ÿ“– ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ

  • LifeCycle, ์ƒํƒœ๊ฐ’ ์ „๋ถ€ ๊ฐ€์งˆ ์ˆ˜ ์—†์Œ
  • ๋ฆฌ์•กํŠธ ๋ฒ„์ „ 16.8๋ถ€ํ„ฐ ํ›…(Hook)์ด ๋“ฑ์žฅํ•˜๋ฉด์„œ ์ƒํƒœ๊ฐ’๊ณผ LifeCycleํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑ ๊ฐ€๋Šฅ

๐Ÿ“Œ State, Props

๐Ÿ“– State๋ž€?

  • ์ƒํƒœ ๊ฐ’

๐Ÿ“– ๋ณ€์ˆ˜(let/const)์™€ state์˜ ์ฐจ์ด๋Š” ๋ญ”๊ฐ€?

  • ๋ณ€์ˆ˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ฐœ๋…์ด๊ณ , state๋Š” ๋ฆฌ์•กํŠธ์˜ ๊ฐœ๋…
  • ๋ฆฌ์•กํŠธ๋„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์ด๋‹ˆ๊นŒ ๋ณ€์ˆ˜๋Š” ๋‹น์—ฐํžˆ ์žˆ๋‹ค
  • ๋ฆฌ์•กํŠธ์—์„œ์˜ state ๋ณ€ํ™”๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ฆฌ๋ Œ๋”๋ง์‹œํ‚ค๋ฏ€๋กœ ํŠน์ˆ˜ํ•œ ์—ญํ• ์„ ์ถ”๊ฐ€์  ์ˆ˜ํ–‰ํ•œ๋ 

๐Ÿ“– Props

  • ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์—์„œ ์ž์‹ ์ปดํฌ๋„ŒํŠธ๋กœ ์ „๋‹ฌํ•ด์ฃผ๋Š” ๊ฐ์ฒด
  • ๊ทธ๋ž˜์„œ ์ž์‹ -> ๋ถ€๋ชจ๋Š” ์•ˆ๋จ
  • props์˜ ๋ฐ์ดํ„ฐ๋Š” ์ง์ ‘ ๋ณ€๊ฒฝํ•˜์ง€ ๋ง๊ฒƒ
  • ๋ถ€๋ชจ์—์„œ ์†์ž์˜ ์†์ž๊นŒ์ง€ ๊ฐ€๊ฒŒ๋˜๋ฉด Props Drilling์ด๋ผ๋Š” ํ˜„์ƒ ๋ฐœ์ƒ
  • Props Drillingํ•ด๊ฒฐ์„ ์œ„ํ•ด ์ „์—ญ์ƒํƒœ๊ด€๋ฆฌํˆด(redux๋“ฑ) ์กด์žฌ
  • Props.children์ด๋ž€๊ฒŒ ์žˆ์Œ => ๋‚ด๋ถ€ ์ปดํฌ๋„ŒํŠธ ํ™•์ธ ๊ฐ€๋Šฅ => ์žฌ์‚ฌ์šฉ์„ฑ ๋†’์ด๋Š”๋ฐ ์ข‹๋”๋ผ

๐Ÿ’ก ๋„์ ์˜€๋˜ ์›๋ณธ ํ…์ŠคํŠธํŒŒ์ผ

  • ๋‚จ๋ณด์—ฌ์ฃผ๊ธด ๋ถ€๋„๋Ÿฌ์›Œ์„œ ๋ ˆํฌ๋ฅผ private๋กœ ๋Œ๋ ค๋†จ๋‹ค
  • ๊ทธ๋ž˜์„œ ๋‚˜๋งŒ ๋ณผ์ˆ˜ ์žˆ์„๊ฑฐ๊ฐ™๋‹ค
    somfist-github

๐Ÿ’ก ๋‹ต๋ณ€

๋ผ์ดํ”„ ์‚ฌ์ดํด์ด๋ž€?

ํฌ๊ฒŒ ๋งˆ์šดํŠธ, ์—…๋ฐ์ดํŠธ, ์–ธ๋งˆ์šดํŠธ ์„ธ๊ฐ€์ง€ ์œ ํ˜•์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
๋จผ์ € ๋งˆ์šดํŠธ๋Š” DOM์ด ์ƒ์„ฑ๋˜์–ด ์›น ๋ธŒ๋ผ์šฐ์ € ์ƒ ๋‚˜ํƒ€๋‚  ๋•Œ์ด๋ฉฐ
๋ฐ˜๋Œ€๋กœ ์–ธ๋งˆ์šดํŠธ๋Š” DOM์ด ์ œ๊ฑฐ๋˜๋Š” ๊ฒƒ์„ ๋œปํ•ฉ๋‹ˆ๋‹ค.
๋งˆ์ง€๋ง‰์œผ๋กœ ์—…๋ฐ์ดํŠธ๋Š” DOM์— ๋ณ€ํ™”๊ฐ€ ์žˆ์„ ๋•Œ ์ฆ‰, ๋ฆฌ๋ Œ๋”๋ง์ด ์ผ์–ด๋‚ฌ์„๋•Œ์ž…๋‹ˆ๋‹ค.  

๋ผ์ดํ”„์‚ฌ์ดํด ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด๋ณด์„ธ์š”

ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค.
๋ผ์ดํ”„์‚ฌ์ดํด์— ๋”ฐ๋ผ ๋งˆ์šดํŠธ๋  ๋•Œ constructor ๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํ–‰๋˜๋ฉฐ
์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ Œ๋”๋งํ•˜๊ธฐ ์œ„ํ•ด render ๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
๋ Œ๋”๋ง์ด ์™„๋ฃŒ๋œ ํ›„ componentDidMount ๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
์—…๋ฐ์ดํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด shouldComponentUpdate ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด
๋ฆฌ๋ Œ๋”๋ง ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๊ณ  componentDidUpdate๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
๋งˆ์ง€๋ง‰์œผ๋กœ ์–ธ๋งˆ์šดํŠธ ๋ ๋•Œ componentWillUnmount ๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
React 16.8๋ฒ„์ „๋ถ€ํ„ฐ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ๋„ useEffect๋ฅผ ํ†ตํ•ด ๋ผ์ดํ”„์‚ฌ์ดํด
๋ฉ”์„œ๋“œ๋ฅผ ๋น„์Šทํ•˜๊ฒŒ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

ํด๋ž˜์Šคํ˜•๊ณผ ํ•จ์ˆ˜ํ˜•์˜ ์ฐจ์ด๋Š”?

16.8๋ฒ„์ „ ์ด์ „์—์„œ๋Š” ํด๋ž˜์Šคํ˜•์˜ ๊ฒฝ์šฐ ์ƒํƒœ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ผ์ดํ”„์‚ฌ์ดํด
๋ฉ”์„œ๋“œ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ํ•จ์ˆ˜ํ˜•์€ ์ƒํƒœ๊ฐ’๊ณผ ๋ผ์ดํ”„์‚ฌ์ดํด ์ „๋ถ€
๊ฐ€์งˆ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๋ Œ๋”๋ง์„ ์œ„ํ•ด์„œ๋Š” ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ๋Š” retrun์„ ์ด์šฉํ•˜๋ฉฐ ํด๋ž˜์Šคํ˜•์€
render ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.
16.8๋ฒ„์ „์˜ Hook ๋“ฑ์žฅ์ดํ›„ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ๋„ ์ƒํƒœ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ
useEffect๋ฅผ ํ†ตํ•ด ๋ผ์ดํ”„์‚ฌ์ดํด ๋ฉ”์„œ๋“œ๋ฅผ ๋น„์Šทํ•˜๊ฒŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ด์ ธ
๋ฉ”๋ชจ๋ฆฌ ๋ฆฌ์†Œ์Šค๋ฅผ ๋œ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ๋ฅผ React ๊ณต์‹๋ฌธ์„œ์—์„œ
๊ถŒ์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฆฌ์†Œ์Šค ์†Œ๋ชจ๊ฐ€ ์ ์€์ด์œ  : ํ•จ์ˆ˜๋Š” ํ•œ๋ฒˆ ์‹คํ–‰๋˜๊ณ ๋‚˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์‚ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ

post-custom-banner

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