TIL_221219_ ๐Ÿšฉ React ์‹ฌํ™” ๊ฐ•์˜

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

TIL

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

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


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

1. ๋ฆฌ์•กํŠธ ์‹ฌํ™” ๊ฐ•์˜

๋‹ค ๋“ฃ๊ณ  ๋ณต์Šต๊นŒ์ง€ ์™„๋ฃŒ

  • Redux Toolkit

    • yarn add react-redux @reduxjs/toolkit
    • devtools๋Š” toolkit์— ๋‚ด์žฅ๋˜์–ด ์žˆ์–ด ์ฝ”๋“œ ์„ค์ • ์—†์ด ํ™•์žฅํ”„๋กœ๊ทธ๋žจ ์„ค์น˜๋งŒ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
    • createSlice API importํ•˜๊ธฐ - slice๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Reducer, Action Value, Action Creator๋ฅผ ํ•œ๋ฒˆ์— ๊ตฌํ˜„ ๊ฐ€๋Šฅ
  • json-server

    • ์•„์ฃผ ๊ฐ„๋‹จํ•œ DB์™€ API ์„œ๋ฒ„๋ฅผ ์ƒ์„ฑํ•ด์ฃผ๋Š” ํŒจํ‚ค์ง€๋กœ Backend(BE)์—์„œ ์‹ค์ œ DB์™€ API Server๊ฐ€ ๊ตฌ์ถ•๋  ๋•Œ๊นŒ์ง€ Frontend(FE) ๊ฐœ๋ฐœ์— ์ž„์‹œ์ ์œผ๋กœ ์‚ฌ์šฉํ•  mock data๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.
    • yarn add json-server
    • react์™€ ๋”ฐ๋กœ start ํ•ด์ฃผ๊ธฐ
      yarn json-server --watch db.json --port 3001
  • Axios

    • yarn add axios
    • http ํ†ต์‹ ์„ ๋„์™€์ฃผ๋Š” ํŒจํ‚ค์ง€
    • ์š”์ฒญ ๋ฐฉ์‹์— ๋Œ€ํ•ด์„œ๋Š” ์‚ฌ์šฉํ•  API ๋ช…์„ธ์„œ๋ฅผ ๋ด์•ผ ํ•œ๋‹ค.
    • GET
    • POST
    • DELETE
    • PATCH
    • Network ํƒญ์„ ํ†ตํ•ด ํ™•์ธ
  • Thunk

    • redux middlewear๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Action์ด reducer๋กœ ์ „๋‹ฌ๋˜๊ธฐ ์ „์— ์–ด๋–ค ์ž‘์—…์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • Thunk๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ๊ฐ์ฒด๊ฐ€ ์•„๋‹Œ ํ•จ์ˆ˜๋ฅผ dispatch ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.
    • createAsyncThunk ๋ผ๋Š” ํˆดํ‚ท API ์‚ฌ์šฉ
      -> ์ฒซ๋ฒˆ์งธ ์ž๋ฆฌ์—๋Š” action value, ๋‘๋ฒˆ์งธ์—๋Š” ํ•จ์ˆ˜
      -> ๋‘๋ฒˆ์งธ๋กœ ๋“ค์–ด๊ฐ€๋Š” ํ•จ์ˆ˜์—์„œ ์ฒซ๋ฒˆ์งธ ์ธ์ž๋Š” ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ณด๋‚ด์ค€ payload, ๋‘๋ฒˆ์งธ ์ธ์ž๋Š” thunk์—์„œ ์ œ๊ณตํ•˜๋Š” API
    • thunk ํ•จ์ˆ˜๋ผ๋Š” ๊ฒƒ์„ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด ํ•จ์ˆ˜ ์•ž์— __ ๋“ฑ์˜ ๊ฐœ์ธ convention ์‚ฌ์šฉ
    • Thunk ์‚ฌ์šฉ ์ˆœ์„œ
    1. Thunk ํ•จ์ˆ˜ ๋งŒ๋“ค๊ธฐ
    2. extraReducer์— thunk ๋“ฑ๋กํ•˜๊ธฐ
    3. dispatch(thunk ํ•จ์ˆ˜) ํ•˜๊ธฐ
    4. devtools ์ด์šฉํ•ด์„œ ์ž‘๋™ ํ™•์ธ
    5. Store ๊ฐ’ ์กฐํšŒํ•˜๊ณ , ํ™”๋ฉด์— ๋ Œ๋”๋ง ํ•˜๊ธฐ
  • redux toolkit์—์„œ์˜ reducer๋Š” action creator๋ฅผ ์ž๋™์œผ๋กœ ๋งŒ๋“ค์ง€๋งŒ ๋น„๋™๊ธฐ๋ฅผ ์œ„ํ•œ extraReducer์—์„œ๋Š” ๋”ฐ๋กœ action creator๋ฅผ ๋งŒ๋“ค์–ด์ค˜์•ผ ํ•œ๋‹ค.

  • React Hooks:optimizing

    • memo
      -> ๋ถˆํ•„์š”ํ•œ ๋ Œ๋”๋ง ๋ฐฉ์ง€
      -> props๋กœ ์ „๋‹ฌํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งค๋ฒˆ ๋ฆฌ๋ Œ๋”๋งํ•˜๋Š” ๊ฒฝ์šฐ memo๋ฅผ ์จ๋„ ๋ Œ๋”๋ง์ด ๊ณ„์† ๋จ
    • useCallback
      -> component๊ฐ€ ๋ฆฌ๋ Œ๋”๋ง ๋˜๋”๋ผ๋„ ์ƒ์„ฑ๋œ ํ•จ์ˆ˜๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ค์ง€ ์•Š๊ณ  ์žฌ์‚ฌ์šฉํ•  ๋•Œ ์“ด๋‹ค.
      -> ์˜์กด์„ฑ ๋ฐฐ์—ด ์‚ฌ์šฉ
      -> ์‚ฌ์šฉ ๋Œ€์ƒ: ํ•จ์ˆ˜
    • useMemo
      -> useCallback๊ณผ ์‚ฌ์šฉ์›๋ฆฌ ๊ฐ™์Œ
      -> ์‚ฌ์šฉ ๋Œ€์ƒ: ๊ฐ์ฒด, ๋ฐฐ์—ด ๋“ฑ์˜ ๊ฐ’
    • ๋ฆฌ๋ Œ๋”๋ง์ด ์ •๋ง ๋ถˆํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉํ•˜๊ธฐ
  • Custom Hook

    • ๊ณตํ†ต๋œ ๋กœ์ง์ด๋‚˜ ๊ธฐ๋Šฅ์„ ๋ณ„๋„๋กœ ๋ถ„๋ฆฌํ•œ hook
    • src/hooksํด๋”/useCustomHook.js

    โญ ๋ฐ˜๋“œ์‹œ file์˜ ์ด๋ฆ„์•ž์— use ์‚ฌ์šฉ

  • ๋ฆฌ์•กํŠธ ๋ฐฐํฌํ•˜๊ธฐ(S3)

    • AWS ์•ก์„ธ์Šค ํ‚ค๋Š” ์ ˆ๋Œ€ ๋…ธ์ถœํ•˜๋ฉด ์•ˆ ๋จ

์ถ”๊ฐ€ ๊ณต๋ถ€


2. React ์ˆ™๋ จ ๊ณผ์ œ ๋ฆฌ๋ทฐ ๊ฐ•์˜ ๋ณต์Šต

  • React ์‹ฌํ™” ๊ฐ•์˜ ์–ด๋ ต๊ณ  ์–ด๋ ค์šด ๊ฑฐ ํ•˜๋‹ˆ ๋˜ ์—„์ฒญ ์กธ๋ ค์„œ ์ค‘๊ฐ„์— ์งง๊ฒŒ ๋‚ฎ์ž  ์ž๊ฐ€๋ฉด์„œ ๊ณต๋ถ€ํ•˜๋‹ค๊ฐ€ ํ™˜๊ธฐ๋„ ์‹œํ‚ฌ๊ฒธ ์ˆ™๋ จ ๊ณผ์ œ ๋ฆฌ๋ทฐ ๊ฐ•์˜ ๋‹ค์‹œ ๋ดค๋‹ค.
    • ์•„์ง ์ˆ™๋ จ ๊ณผ์ œ ์ฝ”๋“œ ์ข€ ๋” ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š”๋ฐ ์‹ฌํ™” ๊ฐ•์˜ ์ดํ•ดํ•ด์•ผ ํ•  ๊ฒŒ ๋„ˆ๋ฌด ๋งŽ๋„ค.

3. Modern JavaScript Tutorial_3

ํ•˜๋ฃจ์— ํ•œ ์‹œ๊ฐ„์”ฉ ๊ณต๋ถ€

๋ธŒ๋ผ์šฐ์ €

  • ๋ธŒ๋ผ์šฐ์ € ์ด๋ฒคํŠธ ์†Œ๊ฐœ

    • addEventListener
      -> ์–ด๋–ค ์ด๋ฒคํŠธ๋Š” addEventListener๋ฅผ ์จ์•ผ๋งŒ ๋™์ž‘

๐Ÿšฉ

๋‚ด ์ƒ๊ฐ

  • ๊ณต๋ถ€๊ฐ€ ๋„ˆ๋ฌด ์•ˆ ๋˜๋Š” ๋‚ 
    • ์ด๋ ‡๊ฒŒ ๊ณต๋ถ€๊ฐ€ ์•ˆ ๋˜๊ณ  ์•ˆ ํ•œ ๋‚ ์€ ์ฒ˜์Œ์ด๋‹ค.
    • ๋ฆฌ์•กํŠธ ์‹ฌํ™” ๊ฐ•์˜๊ฐ€ ์–ด๋ ค์›Œ์„œ ์ข€ ์กธ๋ฆฌ๊ธด ํ–ˆ์ง€๋งŒ ์˜ค์ „๋ถ€ํ„ฐ ๊ฑฐ์˜ ํ•œ ์‹œ๊ฐ„๋งˆ๋‹ค 20๋ถ„์”ฉ ๋‚ฎ์ž  ์ž๊ณ  ์ €๋… ์‹œ๊ฐ„๋„ 1์‹œ๊ฐ„ ์ •๋„ ์•ž๋‹น๊ฒจ ๋ˆ„์›Œ์„œ ์‰ฌ์—ˆ๋‹ค.
    • ๊ทธ๋™์•ˆ ์‹์‚ฌ ์‹œ๊ฐ„ ์ œ์™ธํ•˜๊ณ  ์‰ฌ๋Š” ์‹œ๊ฐ„ ๊ฑฐ์˜ ์—†์ด ๋‹ฌ๋ ค์™”๋Š”๋ฐ ์˜ค๋Š˜ ๋ชฐ์•„ ์‰ฐ ๋Š๋‚Œ์ด๋‹ค.
    • ์ •์‹  ์ฐจ๋ ค์•ผ ๋œ๋‹ค!! ์ด์ œ ๊ณง ํŒ€ํ”Œ ์‹œ์ž‘์ธ๋ฐ!!!!! ์˜ค๋Š˜ ์ผ์ฐ ์ž๊ณ  ๋‚ด์ผ ์ง‘์ค‘ ์ž˜ ํ•˜์ž!!
profile
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž

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