Frontend ๐Ÿ“š/React

[React] ๋ฆฌ์•กํŠธ ๊ธฐ์ˆ  ๋ฉด์ ‘ ํ•ธ๋“œ๋ถ II - ํ•จ์ˆ˜ ์ปจํฌ๋„ŒํŠธ, props, state etc.

leejaejae 2024. 6. 27. 19:19

1. React์—์„œ ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ์™€ ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ์˜ ์ฐจ์ด
2. props์™€ state์˜ ์ฐจ์ด


1. React์—์„œ ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ์™€ ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ์˜ ์ฐจ์ด โญ๏ธ

  • ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ์˜ ๊ฒฝ์šฐ
    • ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ตฌ์กฐ๋ฅผ ๋„๊ณ  ์žˆ์œผ๋ฉฐ, state๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ธฐ ์œ„ํ•ด constructor(์ƒ์„ฑ์ž) ํ•จ์ˆ˜๋ฅผ ํ•„์š”๋กœ ํ•จ
    • ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด state๋ฅผ ์ดˆ๊ธฐํ™”ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ์— ๋น„ํ•ด ์ฝ”๋“œ๊ฐ€ ๊ธธ์–ด์ง€๊ณ , ์‚ฌ์ด์ฆˆ๊ฐ€ ์ปค์งˆ ์ˆ˜ ์žˆ์Œ
    • state ๊ธฐ๋Šฅ ๋ฐ ๋ผ์ดํ”„ ์‚ฌ์ดํด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ž„์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Œ
    • render ํ•จ์ˆ˜๊ฐ€ ๊ผญ ์žˆ์–ด์•ผ ํ•˜๊ณ , ๊ทธ ์•ˆ์—์„œ ๋ณด์—ฌ ์ฃผ์–ด์•ผ ํ•  JSX๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•จ
  • ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ์˜ ๊ฒฝ์šฐ
    • Hooks๋ฅผ ์‚ฌ์šฉํ•ด ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด state๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜์ง€ ์•Š๋”๋ผ๋„ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅ(useState() ๋“ฑ)
    • ์„ ์–ธํ•˜๊ธฐ ์ข€ ๋” ํŽธํ•˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ ์ž์›์„ ๋œ ์‚ฌ์šฉํ•จ
    • ์ œ๊ณต๋˜๋Š” hook ํ•จ์ˆ˜๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ปค์Šคํ…€ ํ›…์„ ์ƒ์„ฑํ•˜์—ฌ ๋™์ž‘ ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ
    • ํ”„๋กœ์ ํŠธ๋ฅผ ์™„์„ฑํ•˜์—ฌ ๋นŒ๋“œํ•œ ํ›„ ๋ฐฐํฌํ•  ๋•Œ๋„ ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฒฐ๊ณผ๋ฌผ์˜ ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ ๋” ์ž‘์Œ

    • Q) ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์•„๋‹Œ ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ๋กœ ๋ถ€๋ฅด๋Š” ์ด์œ ? โญ๏ธ
    • A) "ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ" ๊ณผ ๋„ค์ด๋ฐ์ด ๋น„์Šทํ•ด ํ˜ผ๋ž€์„ ์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ
           ๊ทผ๋ฐ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์ˆœ์ˆ˜ ํ•จ์ˆ˜๋ฅผ ์ง€ํ–ฅํ•˜๋Š”๋ฐ ๋ฆฌ์•กํŠธ๋Š” ํ›…์ด ๋“ค์–ด๊ฐ€์„œ ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ๋ฅผ ์ผ์œผํ‚ค๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ
           ๋ฅผ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ๋กœ ๋ณด๊ธฐ๋Š” ์–ด๋ ค์›€

 

2. props์™€ state์˜ ์ฐจ์ด โญ๏ธ

  • props
    • ์ปดํฌ๋„ŒํŠธ ์†์„ฑ์„ ์„ค์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์š”์†Œ
    • props ๊ฐ’์€ ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ถˆ๋Ÿฌ์™€ ์‚ฌ์šฉํ•˜๋Š” ๋ถ€๋ชจ ์ปจํฌ๋„ŒํŠธ์—์„œ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Œ
    • ์ปดํฌ๋„ŒํŠธ ์ž์‹ ์€ ํ•ด๋‹น props๋ฅผ ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
    • props๋ฅผ ๋ฐ”๊พธ๋ ค๋ฉด ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ฐ”๊ฟ”์ค˜์•ผ ํ•จ
  • state
    • ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์—์„œ ๋ฐ”๋€” ์ˆ˜ ์žˆ๋Š” ๊ฐ’

  • Q) props๊ฐ€ ์ปดํฌ๋„ŒํŠธ๊ฐ„์— ์ „๋‹ฌ๋ฐ›๋Š” ๊ฒƒ์ด๋ผ๊ณ  ํ–ˆ๋Š”๋ฐ ์ž์‹์—์„œ ๋ถ€๋ชจ๋กœ๋„ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€!? โญ๏ธ
  • A) NO!! ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์—์„œ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ถ€๋ชจ์—์„œ ์ž์‹์œผ๋กœ๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ค„ ์ˆ˜ ์žˆ์Œ

  • ์ž์‹์—์„œ ๋ถ€๋ชจ๋กœ ๋ฐ์ดํ„ฐ ์ „์†กํ•˜๋Š” ๋ฐฉ๋ฒ• = ํ•จ์ˆ˜ ์ด์šฉ 
    • ์ž์‹์€ props๋ฅผ ์‚ฌ์šฉํ•ด ๋ถ€๋ชจ์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฑด๋„ค์ค„ ์ˆ˜ ์—†์Œ
    • ๋”ฐ๋ผ์„œ, ๋ถ€๋ชจ๊ฐ€ ํ•จ์ˆ˜๋ฅผ ๋„ฃ์–ด props๋กœ ์ž์‹์—๊ฒŒ ๋„˜๊ฒจ์ฃผ๋ฉด, ์ž์‹์ด ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„ฃ์–ด์„œ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•จ
    • ์ฆ‰!! ๋ถ€๋ชจ๊ฐ€ props๋กœ ํ•จ์ˆ˜๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ์ž์‹์ด ๊ทธ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ๊ฐ’์„ ๊ฑด๋„ค์ฃผ๋Š” ๋ฐฉ์‹