TIL_221209_ ๐Ÿšฉโ“โœ… React ๊ณต๋ถ€, Redux ํŠน๊ฐ•

์ •์œค์ˆ™ยท2022๋…„ 12์›” 9์ผ
0

TIL

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

๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ 4๊ธฐ ์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉ React B๋ฐ˜


๐Ÿ“’ ์˜ค๋Š˜์˜ ๊ณต๋ถ€

1. React Udemy ๊ฐ•์˜

  • React ๊ธฐ์ดˆ ๋ฐ ์‹ค์Šต ์ปดํฌ๋„ŒํŠธ

PROPS

  • props๋กœ ๋„˜๊ฒจ์ค„ ๋•Œ key๊ฐ’์€ ๋‚ด ๋งˆ์Œ๋Œ€๋กœ ์„ค์ •ํ•ด๋„ ๋œ๋‹ค.
    • ์ปดํฌ๋„ŒํŠธ์—์„œ๋Š” ๊ทธ key ์ด๋ฆ„์„ ์จ์•ผํ•œ๋‹ค.
    • props๋Š” ๋™์ ์ธ ๋ฐ์ดํ„ฐ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‚ด๊ฐ€ ์ง€์ •ํ•œ value(๊ฐ’)์„ ๋„˜๊ฒจ ์ค„ ์ˆ˜ ์žˆ๋‹ค.
  • component์—์„œ componet๋ฅผ ๋ถ„๋ฆฌํ•  ๋•Œ props๋กœ ๋ฐ์ดํ„ฐ ๋„˜๊ฒจ์ฃผ๋Š” ๊ฒƒ ์ฃผ์˜!
    • App -> A -> B์ผ ๋•Œ A์—์„œ props๋กœ ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์™”๊ณ  ๊ทธ ์ค‘ date๋ถ€๋ถ„๋งŒ B๋กœ ๋ถ„๋ฆฌํ•œ๋‹ค.
    • A์—์„œ B์—๊ฒŒ props.date ๋ถ€๋ถ„์„ props๋กœ ๋„˜๊ฒจ์ค˜์•ผ ํ•œ๋‹ค.
  • wrapper component
    • A ์ปดํฌ๋„ŒํŠธ๋กœ ๋‚ด์šฉ์„ ๊ฐ์ŒŒ์„ ๋•Œ ์•ˆ์— ์žˆ๋Š” ๊ฒƒ๋“ค์€ A์ปดํฌ๋„ŒํŠธ์—์„œ props.children์œผ๋กœ ๋ฐ›๋Š”๋‹ค.
    • A ์ปดํฌ๋„ŒํŠธ์— ์›๋ž˜ ์žˆ๋˜ className์„ ์ ์šฉ์‹œํ‚ค๊ณ  ์‹ถ์œผ๋ฉด A ์ปดํฌ๋„ŒํŠธ ํŒŒ์ผ์—์„œ classes ๋ณ€์ˆ˜๋ฅผ ์„ค์ • ํ•ด ํ•ญ์ƒ ์ ์šฉ๋˜๋Š” className๊ณผ props๋กœ ๋ฐ›์•„์˜จ className์„ ๋„ฃ๊ธฐ

โ“

const classes = "card" + props.className;

  • ๋‚˜๋ˆŒ ๋•Œ ์ž˜๋ชป ๋‚˜๋ˆด๋Š”์ง€ CSS๊ฐ€ ์ ์šฉ์ด ์•ˆ ๋ผ์„œ ์ผ๋‹จ ๋‚˜๋ˆˆ ๊ฒƒ ์ ์šฉ ์ทจ์†Œ

  • ๋‚ด์žฅ Method
    • toISOString()
    • toLocaleString()
    • getFullYear() - 4์ž๋ฆฌ ์ˆ˜ ๋…„๋„

2. Redux ํŠน๊ฐ•

  • ๋ชฉํ‘œ

    • Redux๊ฐ€ ๋ฌด์—‡์ด๊ณ  ์™œ ์จ์•ผ ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๊ธฐ
  • Redux๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 

    • props drilling์œผ๋กœ ์ธํ•œ ๋ฌธ์ œ ๋ฐœ์ƒ
      -> ์ค‘๊ฐ„ ์ปดํฌ๋„ŒํŠธ๊ฐ€ 100๊ฐœ๋ผ๋ฉด app์—์„œ ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚ฌ์„ ๋•Œ 100๋ฒˆ ์ˆ˜์ •ํ•ด์•ผ ํ•จ
    • state๊ฐ€ 100๊ฐœ ์ด์ƒ์ผ ๋•Œ
      -> ํ•œ๊ธ€๋งŒ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” state์— ์˜๋ฌธ์„ ์ถ”๊ฐ€ํ•˜๊ฒŒ ๋˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋‚จ.
      -> state ๋ณ€๊ฒฝ / ๊ด€๋ฆฌ๋Š” Redux์—์„œ๋งŒ ํ•˜๊ธฐ!
  • store

    • ์ˆ˜ ๋งŽ์€ state์™€ Reducer๊ฐ€ ์žˆ๋Š” ์ €์žฅ์†Œ
    • dispatch๋„ ์žˆ๋‹ค!
  • state

    1. ์ „์—ญ state -> store์— ์žˆ์Œ
    2. ์ปดํฌ๋„ŒํŠธ state(์ง€์—ญ state)
    • ๋ชจ๋“  state๊ฐ€ Redux๋กœ ๊ด€๋ฆฌ๋˜๋Š” ๊ฒŒ ์•„๋‹˜!
  • ์ž‘๋™ ์›๋ฆฌ

    • 'config'ํด๋”์˜ configStore.js์—์„œ ๋ฆฌ๋“€์„œ, store๋ฅผ ๋งŒ๋“ค๊ณ  store๋ฅผ export
    • 'modules'ํด๋”์˜ counter.js ์—์„œ 'Action Value', 'Action creator', 'Reducer'๋ฅผ ๋งŒ๋“ ๋‹ค.
    • 'Action creator' ๋กœ ๋งŒ๋“ค์–ด์ง„ ๋ถ€๋ถ„์„ UI(์ปดํฌ๋„ŒํŠธ)์—์„œ method๋กœ ์“ฐ๋ฉด์„œ Action์ด ์ผ์–ด๋‚˜๊ฒŒ ํ•œ๋‹ค.
  • ์‹ค์Šต

    ์ž…์ถœ๊ธˆ ๋งŒ๋“ค๊ธฐ

    • ํ„ฐ๋ฏธ๋„์—์„œ redux๋ฅผ ๋จผ์ € ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค.
      yarn add @reduxjs/toolkit react-redux
      -> ๋งํฌ ์ฐธ๊ณ ํ•ด์„œ ๊ฐ ํŒŒ์ผ์—์„œ redux ์—ฐ๊ฒฐ
      ์ฐธ๊ณ : https://react-redux.js.org/tutorials/quick-start
    • ์—ฐ๊ฒฐํ•˜๊ณ  ๋ณด๋‹ˆ ๋ฒ„ํŠผ ๋ˆ„๋ฅด๊ธฐ ์ „์— input์— ์ž…๋ ฅํ•œ ๊ฐ’์ด ์ž๋™์œผ๋กœ ๋ฐ˜์˜์ด ๋๋‹ค.
      -> initialState๋ฅผ ๋ฐ›์•„์˜ค๋Š”๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ
      state={initialState} ์—ฌ๊ธฐ์„œ ์ค‘๊ด„ํ˜ธ๋ฅผ ์ง€์šฐ๋‹ˆ ์ž˜ ์ž‘๋™ํ–ˆ๋‹ค.(git commit์œผ๋กœ ํ™•์ธ)

3. React ์ž…๋ฌธ ๊ณผ์ œ ๋‹ค์‹œ ํ•œ ๊ฒƒ ์ˆ˜์ •

  • CustomButton ๋ถ„๋ฆฌ

  • ์ค‘๋ณต ์ฝ”๋“œ ์ •๋ฆฌ(ToDoBox)

  • โœ… alert ๊ตฌํ˜„

  • โœ… CSS

  • ์ผ์š”์ผ ์Šคํ„ฐ๋””์—์„œ ๋ฆฌ๋ทฐํ•˜๊ธฐ๋กœ ํ•ด์„œ CSS, ์ฃผ์„ ๋“ฑ ์† ๋ณด๊ธฐ!

    • CSS ์† ๋ณด๋‹ค๊ฐ€ ์˜ค๋Š˜ Udemy React ๊ฐ•์˜์—์„œ ๋ฐฐ์šด๋Œ€๋กœ props ์ž˜ ๋„˜์–ด๊ฐ”๋Š”์ง€ ์ „์ฒด์ ์ธ ์ฝ”๋“œ ์ ๊ฒ€!
      -> props ์กฐ๊ธˆ ์ˆ˜์ •ํ•˜๊ณ  ์ฃผ์„ ๋” ์ถ”๊ฐ€

    • input์ด ๋น„์—ˆ์„ ๋•Œ alert ๊ตฌํ˜„์ด ์ž˜ ์•ˆ๋ผ์„œ ํŒ€์›๋“ค ๋„์›€์„ ๋ฐ›์•„ ์ฝ”๋“œ๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ๊ตฌํ˜„ํ–ˆ์Œ!
      -> ์ œ๋ชฉ๋งŒ ๋น„์—ˆ์„ ๋•Œ, ๋‚ด์šฉ๋งŒ ๋น„์—ˆ์„ ๋•Œ ๊ฐ๊ฐ input์ฐฝ์— focus ๋˜๋Š” ๋ถ€๋ถ„๋„ ๋„์›€ ๋ฐ›์•„ ๊ตฌํ˜„ํ–ˆ๋‹ค!


๐Ÿšฉ

  • ํ•  ๊ฒŒ ๋„ˆ๋ฌด ๋งŽ์•„
    • ์˜ค์ „ ๋‚ด๋‚ด ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋„์ „ํ•˜๋‹ค ๋‹ค ์ฃผ๋ง์— ํ’€๊ธฐ๋กœ ํ•˜๊ณ  ๋„˜๊ฒจ๋ฒ„๋ฆฌ๊ณ  React ๋งˆ์ € ๊ณต๋ถ€ํ–ˆ๋‹ค.
profile
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž

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