[๋ฉ‹์Ÿ์ด ์‚ฌ์ž์ฒ˜๋Ÿผ] ๋ฉ‹์‚ฌ ํ”„๋ก ํŠธ์—”๋“œ ์Šค์ฟจ 5๊ธฐ 12์ฃผ์ฐจ 4LS ํšŒ๊ณ  (useEffect, useMemo, Context, customHook)

2023. 5. 22. 22:43ใ†๋ฉ‹์Ÿ์ด์‚ฌ์ž์ฒ˜๋Ÿผ

๋ฐ˜์‘ํ˜•

[๋ฉ‹์Ÿ์ด ์‚ฌ์ž์ฒ˜๋Ÿผ] ๋ฉ‹์‚ฌ ํ”„๋ก ํŠธ์—”๋“œ ์Šค์ฟจ 5๊ธฐ 12์ฃผ์ฐจ 4LS ํšŒ๊ณ  (useEffect, useMemo, Context, customHook)

 โค๏ธ‍๐Ÿ”ฅ Liked
  • ์ด๋ฒˆ์ฃผ ์ˆ˜์—…์—์„œ git ์‹ฌํ™”๊ณผ์ •์ด ์žˆ์–ด์„œ ์ข‹์•˜๋‹ค. ๋ฒ”์žฌ๊ฐ•์‚ฌ๋‹˜์ด ์ผ๋ถ€๋Ÿฌ ํŒ€๋ผ๋ฆฌ PR, Merge ๊ณผ์ •์—์„œ ์—๋Ÿฌ๊ฐ€ ๋‚˜๋Š” ์ƒํ™ฉ์„ ๋งŒ๋“ค์—ˆ๊ณ , History๊ฐ€ ๊ผฌ์ด๋Š” ํ™”๋ฉด์„ ๋ณด์—ฌ์ฃผ์‹œ๋ฉด์„œ ํ•ด๊ฒฐํ•˜๋Š” ๊ฑธ ๋ณด๋‹ˆ ํ™•์‹คํžˆ ๋„์›€์ด ๋๋‹ค.
    ์‹ค์ œ ํ˜„์—…์—์„œ ๋‚จ๊ธฐ๋Š” ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€์™€ ๊ธฐ๋ก์„ ๋ณด๋Š” ๊ฒƒ๋„ ํฐ ๋™๊ธฐ๋ถ€์—ฌ๊ฐ€ ๋˜์—ˆ๋‹ค.
  • React ๋งˆ์ง€๋ง‰ ํŒŒํŠธ์—์„œ customHook์„ ๋ฐฐ์šฐ๋ฉด์„œ ๋ฌดํ•œ ์Šคํฌ๋กค์„ ๊ตฌํ˜„ํ–ˆ๋Š”๋ฐ ๊ฟ€์žผ!
    ์™œ ์žฌ๋ฐŒ์–ด์ง€์ž๋งˆ์ž ๋๋‚˜๋ฒ„๋ฆฌ๋‹ˆ ๋ฆฌ์•กํŠธ... ๊ณผ์ •์ด ๋„ˆ๋ฌด ์งง์•„์š”... ๊ณ„์† ๋ฐฐ์šฐ๊ณ  ์‹ถ์–ด์š”...
  • promise, fetch ๊ณ„์†ํ•ด๋„ ์ดํ•ด๊ฐ€ ์•ˆ ๊ฐ€๊ณ  ์–ด๋ ต๋”๋‹ˆ ๊ทธ๋ƒฅ ํ†ต์งธ๋กœ ์™ธ์›Œ๋ฒ„๋ฆฌ๋‹ˆ ํŽธ-์•ˆ.
    API๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ตฌ์กฐ์— ๋Œ€ํ•ด์„œ๋Š” ์ถฉ๋ถ„ํžˆ ์ดํ•ดํ–ˆ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์–ด์„œ ์Šค๋‹ˆํŽซ์œผ๋กœ ๋งŒ๋“ค์–ด๋ฒ„๋ ธ๋‹ค.
    ์ฃผ๋ง์— ๊ณต๊ณต API ๊ฐ€์ ธ์™€์„œ ์‹ค์Šตํ•ด ๋ด์•ผ๊ฒ ๋‹ค. (์ดํ•ดํ–ˆ๋‹ค๋Š” ๋ง ๊ณง ์ •์ •๋  ์ˆ˜ ์žˆ์Œ ์ฃผ์˜...๐Ÿ˜•)

 
 

 ๐Ÿ’ฃ Lacked
  • React ํ•™์Šต์ด ๋๋‚˜์„œ ๊ณง ํ”„๋กœ์ ํŠธ์— ๋“ค์–ด๊ฐ€๋Š”๋ฐ ์ƒํƒœ๊ด€๋ฆฌ ์ •๋„๋งŒ ํ•˜๋Š” ์ •๋„๋ผ ์–ด๋–ป๊ฒŒ React ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹น์žฅ ์ฐฉ์ˆ˜ํ•ด์•ผ ํ• ์ง€ ๋ง‰๋ง‰ํ•˜๋‹ค. ์ƒˆ๋กœ์šด ๊ฐ•์˜๋ฅผ ๋“ฃ๊ธฐ๋ณด๋‹ค๋Š” ๊ธฐ์กด์— ์‹ค์Šตํ–ˆ๋˜ ์ž๋ฃŒ๋ฅผ React๋กœ ๋ณ€๊ฒฝํ•ด ๋ณด๋ผ๋Š” ์กฐ์–ธ์„ ๋ฐ›์•„์„œ ์‹คํ–‰ํ•ด ๋ณผ ์˜ˆ์ •์ด๋‹ค.
  • ๋ฉ˜ํ† ๋‹˜์—๊ฒŒ ์šฐ์—ฐํžˆ ๊ฑฑ์ •์„ ํ„ธ์–ด๋†“๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ ๋‚ด๊ฐ€ ๋ฌด์—‡์„ ๋ชจ๋ฅด๋Š”์ง€๋„ ๋ชจ๋ฅด๋Š” ๋ฌด์ง€ํ•œ ์ƒํƒœ UU(Unknown-Unknowns)์—์„œ ๋‚˜์˜ ๋ถ€์กฑํ•จ๊ณผ ํ•„์š”๋ฅผ ์ธ์‹ํ•˜๋Š” KU(Known-Unknowns)์ƒํƒœ๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ์กฐ์–ธ์„ ๋ฐ›์•˜๋‹ค. ๋‚ด๊ฐ€ ๋ฌด์—‡์„ ๋ชจ๋ฅด๋Š”์ง€, ์–ด๋–ค ์ง€์‹์ด ํ•„์š”ํ•œ์ง€ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ตฌ์ฒด์ ์ธ ์งˆ๋ฌธ์„ ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๊ณ  ์งˆ๋ฌธ์„ ์ž‘์„ฑํ•˜๋Š” ๊ทธ ๊ณผ์ • ์ œ์ฒด์—์„œ ๋‹ต์„ ์ฐพ๊ธฐ๋„ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
    ํ˜ผ์ž์„œ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ์‹์ด ์ต์ˆ™ํ•ด์„œ ๋„์›€์„ ์š”์ฒญํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค๊ณ ๋งŒ ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ์งˆ๋ฌธ ์—ญ์‹œ ํ›ˆ๋ จ์ด๊ณ  ํ˜ผ์ž์„œ๋งŒ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ์‹์ด ํ˜‘์—…์— ์žˆ์–ด์„œ ์ข‹์ง€ ์•Š์€ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค๋Š” ํ˜„์‹ค์ ์ธ ์กฐ์–ธ์— ๊นŠ์ด ๋ฐ˜์„ฑํ–ˆ๋‹ค. ๋•๋ถ„์— ์•ž์œผ๋กœ์˜ ํ•™์Šต ๋ฐฉํ–ฅ๋„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๐Ÿ™‚

 

known-unknown Matrix
known-unknown Matrix

 

 

 

 โœ๏ธ Learned
  • useEffect๋Š” state๋ฅผ ์ง€์ •ํ•˜์—ฌ ํ•ด๋‹น ์Šคํ…Œ์ดํŠธ๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์Œ์„ ๊ฐ์ง€ํ•˜๋ฉด ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.
  • useRef๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ useRef๊ฐ€ ์ ‘๊ทผํ•œ ํƒœ๊ทธ ์š”์†Œ์˜ ๊ฐ’์„ ๋ฐ”๊ฟ€ ๋•Œ๋Š” ๋ฆฌ๋ Œ๋”๋ง์„ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—
    ๋ฆฌ๋ Œ๋”๋ง ํ•˜์ง€ ์•Š๊ณ  state์™€ ์ƒ๊ด€์—†์ด component์˜ DOM์„ ์ œ์–ดํ•˜๊ณ  ์‹ถ์„ ๋•Œ useRef๋ฅผ ์‚ฌ์šฉ.
  • React์— ๊ฐ€์žฅ ํฐ ์žฅ์ ์ธ ์žฌ์‚ฌ์šฉ์„ฑ์„ ์ƒ๊ฐํ•œ๋‹ค๋ฉด useRef์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Œ.
  • useMemo๋Š” ์ปดํฌ๋„ŒํŠธ ์„ฑ๋Šฅ ์ตœ์ ํ™”์— ์‚ฌ์šฉ๋˜๋ฉฐ memoization์ด๋ผ๋Š” ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • fetch API๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„ํ†ต์‹ ํ•  ๋•Œ๋Š” ๊ผญ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค„ ๊ฒƒ.
  • fetch()๋ฅผ ํ†ตํ•ด api๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์ƒํƒœ๋ณ€๊ฒฝ์— ๋”ฐ๋ผ ๋ฆฌ๋ Œ๋”๋ง์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ useEffect Hook์„ ์‚ฌ์šฉํ•  ๊ฒƒ.
  • await๋Š” ํ•จ์ˆ˜ ์•ž์—!! ๋ณ€์ˆ˜๋ช… ์•ž์— ํ•˜๋Š” ๊ฑฐ ์•„๋‹ˆ๋‹ค...!
  • api url์— ? ์กฐ๊ฑด=๋‹ต ํ˜•์‹์œผ๋กœ ์งˆ์˜ ๊ฐ€๋Šฅ.
  • context๋Š” ์ปดํฌ๋„ŒํŠธ ๊ณ„์ธต ๊ตฌ์กฐ์—์„œ ํ•˜์œ„๋กœ ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌ. Consumer๋กœ ๊ตฌ๋…, Provider์—์„œ ์ „๋‹ฌ
  • useContext๋Š” ๊ตฌ์กฐ๋ถ„ํ•ดํ• ๋‹น์œผ๋กœ context๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์‹คํ–‰ํ•˜๋Š” hook
  • ์‹œ๋‹ˆ์–ด์™€ ์ฃผ๋‹ˆ์–ด์˜ ์ฐจ์ด๋Š” ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๋ฐฉํƒ„์ฝ”๋“œ๊ฐ€ ์žˆ๋Š๋ƒ์˜ ์ฐจ์ด์ด๊ธฐ๋„. ์˜ˆ์™ธ์ฒ˜๋ฆฌ ์ค‘์š”ํ•˜๊ฒŒ ์ƒ๊ฐํ•  ๊ฒƒ.
  • Clean-up ํ•จ์ˆ˜๋Š” Update, Unmount๋  ๋•Œ ์‹คํ–‰.
  • Lazy initialize๋Š” useState๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ state๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ณผ์ •์„ lazy(๊ฒŒ์œผ๋ฅด๊ฒŒ)ํ•˜๊ฒŒ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ.
  • JS์—์„œ๋Š” ์ค‘๋ณต๋œ ๋กœ์ง์„ Function์œผ๋กœ ์ฒ˜๋ฆฌํ•˜์ง€๋งŒ ๋ฆฌ์•กํŠธ์—์„œ๋Š” Custom Hook์„ ๋งŒ๋“ค์–ด์„œ ๋ถ„๋ฆฌํ•˜๊ณ  ์žฌ์‚ฌ์šฉ์„ ๋†’์ธ๋‹ค.

 
 
 

 ๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป Longed For
  • 10km ๋Ÿฌ๋‹, ์ˆ˜์˜ (๋‚ด ์ฒด๋ ฅ...์–ด๋””๊ฐ”๋ƒ)
  • ํ—ท๊ฐˆ๋ฆฌ๊ณ  ์–ด๋ ค์šด ๋ฌธ์ œ๋Š” ๋ฉ˜ํ† ๋‹˜์ด๋‚˜ ๊ฐ•์‚ฌ๋‹˜๊ป˜ ๋„์›€ ์š”์ฒญ.
  • ๋ชจ๋˜ JavaScript ํŠœํ† ๋ฆฌ์–ผ, ํŒŒํŠธ 2 ์ด๋ฒคํŠธ ๋‹จ๋ฝ ์ˆ™์ง€.
  • ํšŒ๊ณ ์กฐ React ๊ณต์‹๋ฌธ์„œ ์Šคํ„ฐ๋”” ์ฐธ์—ฌ.
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 0๋‹จ๊ณ„ ๋ฌธ์ œ ๋งค์ผ 2๊ฐœ์”ฉ ํ’€๊ธฐ.
  • ์„ธ๋ ๊ฒŒํ‹ฐ mbti ๊ฐ•์˜ ์‚ฐ์ถœ๋ฌผ React SPA๋กœ ๋งŒ๋“ค์–ด๋ณด๊ธฐ.

 

 

 

 

๋ฐ˜์‘ํ˜•

'๋ฉ‹์Ÿ์ด์‚ฌ์ž์ฒ˜๋Ÿผ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋ฉ‹์Ÿ์ด ์‚ฌ์ž์ฒ˜๋Ÿผ] ๋ฉ‹์‚ฌ ํ”„๋ก ํŠธ์—”๋“œ ์Šค์ฟจ 5๊ธฐ๋ฅผ ๋งˆ์น˜๋ฉฐ ๋‚จ๊ธฐ๋Š” ํšŒ๊ณ (ํŒ€ํ”„๋กœ์ ํŠธ, ์ˆ˜๋ฃŒ)  (0) 2023.07.14
[๋ฉ‹์Ÿ์ด ์‚ฌ์ž์ฒ˜๋Ÿผ] ๋ฉ‹์‚ฌ ํ”„๋ก ํŠธ์—”๋“œ ์Šค์ฟจ 5๊ธฐ 13์ฃผ์ฐจ 4LS ํšŒ๊ณ  (Redux, TDD, ์ž๋ฃŒ๊ตฌ์กฐ, ์•Œ๊ณ ๋ฆฌ์ฆ˜, Big O, ์›น ์ ‘๊ทผ์„ฑ)  (0) 2023.05.27
[๋ฉ‹์Ÿ์ด ์‚ฌ์ž์ฒ˜๋Ÿผ] ๋ฉ‹์‚ฌ ํ”„๋ก ํŠธ์—”๋“œ ์Šค์ฟจ 5๊ธฐ 11์ฃผ์ฐจ 4LS ํšŒ๊ณ  (Props, useState, Router, Styled-Components)  (0) 2023.05.16
[๋ฉ‹์Ÿ์ด ์‚ฌ์ž์ฒ˜๋Ÿผ] ๋ฉ‹์‚ฌ ํ”„๋ก ํŠธ์—”๋“œ ์Šค์ฟจ 5๊ธฐ 10์ฃผ์ฐจ 4LS ํšŒ๊ณ  (React Component, JSX, Props, Node.js, npm)  (0) 2023.05.10
[๋ฉ‹์Ÿ์ด ์‚ฌ์ž์ฒ˜๋Ÿผ] ๋ฉ‹์‚ฌ ํ”„๋ก ํŠธ์—”๋“œ ์Šค์ฟจ 5๊ธฐ 9์ฃผ์ฐจ 4LS ํšŒ๊ณ  (๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ)  (0) 2023.05.01