[๐Ÿ’ป ์ฝ”๋“œ์Šคํ…Œ์ด์ธ  FE 44๊ธฐ]main-project - ํšŒ๊ณ 

JiEunยท2023๋…„ 7์›” 27์ผ
0
post-thumbnail

โœ”๏ธ ์‹œ์ž‘

์ง„์งœ GOD ํŒ€์›๋“ค ๋•๋ถ„์— ์ข‹์€ ๊ฒฐ๊ณผ๋ฌผ์„ ์–ป์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

๐Ÿš€ 6ํŒ€ - 6 can do it (github)

๐Ÿ”— ๋ฉ”์ธ ํ”„๋กœ์ ํŠธ github ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ”— ๋ฐฐํฌ ์‚ฌ์ดํŠธ ์ฃผ์†Œ


โœ”๏ธ Keep

ํ”„๋ฆฌ ํ”„๋กœ์ ํŠธ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์‹ค๋ ฅ์ด ๋งค์šฐ ๋ถ€์กฑํ–ˆ๋‹ค.
์ด๋ฒˆ ๋ฉ”์ธ ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ์—” ๋‹ค๋“ค ์‹ค๋ ฅ์ด ๋งค์šฐ ๋›ฐ์–ด๋‚˜ ์ตœ๋Œ€ํ•œ ํ”ผํ•ด ์ฃผ์ง€๋ง๊ณ  ๋‚ด๊ฐ€ ๋งก์€ ์—…๋ฌด์— ์ตœ์„ ์„ ๋‹คํ•˜์ž๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

  • ์ž‘์—… ์†๋„๊ฐ€ ๋Š๋ ค ๋ฐ๋“œ๋ผ์ธ๊นŒ์ง€ ๋งž์ถ”๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ–ˆ๋‹ค.
  • 3์‹œ๊ฐ„ ์ด์ƒ ๋ง‰ํ˜”์„ ๋• ๋ฐ”๋กœ ์งˆ๋ฌธ์„ ํ–ˆ๋‹ค.
  • ๋ชจ๋ฅด๊ฑฐ๋‚˜ ์ดํ•ด๊ฐ€ ์•ˆ ๋˜๋ฉด ๋‹ค์‹œ ์—ฌ์ญค๋ณด๊ธฐ๋„ ํ–ˆ๋‹ค.
  • ๋‚ด๊ฐ€ ๋งก์€ ์—…๋ฌด์— ๋Œ€ํ•ด ์ตœ๋Œ€ํ•œ ์ฑ…์ž„๊ฐ ์žˆ๊ฒŒ ํ•˜๋ ค๊ณ  ํ–ˆ๋‹ค.
  • ํŒ€์›๊ฐ„์˜ ์‹ค๋ ฅ ์ฐจ๊ฐ€ ๋‚ฌ์ง€๋งŒ ๋•๋ถ„์— ๋‚˜์˜ ์‹ค๋ ฅ์ด ๊ทธ ๋งŒํผ ๋งŽ์ด ๋ฐœ์ „ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ„๊ธฐ์˜€๋‹ค.

โœ๏ธ Problem

โœ”๏ธ ์†Œํ†ต

์‹ค๋ ฅ์ฐจ์ด๊ฐ€ ๋‚˜๋‹ค ๋ณด๋‹ˆ ์†Œํ†ตํ•  ๋•Œ ์ดํ•ด ์•ˆ ๋˜๋Š”๊ฒŒ ๋งŽ์•˜๋‹ค.

  • ์Œ.. ๋ฌด์Šจ ๋œป์ด์ง€..? ๋ฌด์Šจ ๋ง์”€ ํ•˜์‹œ๋Š”๊ฑธ๊นŒ..? ์•„ํ•˜ ๊ทธ๋ ‡๊ตฌ๋‚˜... ์ด๋žฌ๋‹ค..ใ…Ž
  • ๊ทธ๋กœ ์ธํ•ด ์ดˆ๋ฐ˜์— ๋งŽ์ด ๋‹ต๋‹ตํ•˜๊ณ  ์ŠคํŠธ๋ ˆ์Šค๋ฅผ ๋ฐ›๊ธฐ๋„ ํ–ˆ๋‹ค.

โœ”๏ธ ์ž‘์—…

๋‚ด๊ฐ€ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ์ž‘์—…?์„ ๊ฐ€์ ธ๊ฐ”์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ž‘์—… ์†๋„๊ฐ€ ๋Š๋ ธ๋‹ค.
๋‹ค๋ฅธ ๋ถ„๋“ค 1~2์ผ๋ฉด ๋๋‚˜๋Š”๊ฑฐ ๋‚˜๋Š” 2~3์ผ ๊ฑธ๋ ธ๋‹ค. ๋•๋ถ„์— ์ดˆ์กฐํ•จ์ด ์ƒ๊ธฐ๊ธฐ๋„ ํ•˜๊ณ  ๋ฏผํ๋ฅผ ๋ผ์น˜๋Š”๊ฒŒ ์•„๋‹๊นŒ ์ƒ๊ฐ๋„ ํ–ˆ์—ˆ๋‹ค.

OAuth axios interceptors๊ฐ€ ๋ญ”๋ฐ...?
ํšŒ์› ๊ณ„์ • ํŒŒํŠธ๋ฅผ ๋‹ด๋‹นํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ํ•œ ๋ฒˆ๋„ ์•ˆํ•ด๋ด์„œ ํ•ด๋ณธ๊ฒƒ๋„ ์žˆ๊ณ  ๊ดœํžˆ ๋น„์ค‘์ด ํฐ ์ž‘์—…ํ–ˆ๋‹ค๊ฐ€ ๋ง์น  ๊นŒ๋ด ํ•œ ๊ฒƒ๋„ ์žˆ์—ˆ๋‹ค.
ํ—ˆ๋‚˜... ํšŒ์› ๊ณ„์ •์ด ์–ด์ฉŒ๋ฉด ๊ฐ€์žฅ ์ค‘์š”ํ•œ๊ฒŒ ์•„๋‹๊นŒ ์‹ถ๊ธฐ๋„ ํ•˜๋‹ค.
axios๋Š” ์•Œ๊ณ  ์žˆ์—ˆ์ง€๋งŒ axios interceptors์— ๋Œ€ํ•ด ์•„๋Š”๊ฒŒ ๋งŽ์ด ์—†์—ˆ๋‹ค.

๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•˜๋ฉด API ์š”์ฒญ, ์‘๋‹ต์„ ๋ฏธ๋ฆฌ ๊ฐ€๋กœ ์ฑŒ ์ˆ˜ ์žˆ๋Š” ๋น„๋™๊ธฐ๋กœ ์ž‘๋™ํ•œ๋‹ค.
์ดˆ๋ฐ˜์— ์ง„์งœ OAuth ์š”์ฒญ, ์‘๋‹ต์—์„œ ๋งŽ์ด ํ—ค๋งธ๋‹ค...ใ… 

ํŒ€์› ๋ถ„๊ป˜ 3~4๋ฒˆ ์งˆ๋ฌธํ–ˆ๋˜๊ฑฐ ๊ฐ™๋‹ค.(๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค..ใ…Ž)

๊ณต๋ถ€ํ•˜์ž
https://axios-http.com/kr/docs/interceptors

ํ† ํฐ ๋ฐœ๊ธ‰ ๋ณด๋‹ค ํ† ํฐ ์žฌ๋ฐœ๊ธ‰์ด ๋” ์–ด๋ ค์›Œ
ํ† ํฐ ์žฌ๋ฐœ๊ธ‰ ๋กœ์ง ์ž‘์„ฑํ•˜๋Š”๋ฐ ๋” ์–ด๋ ค์› ๋‹ค.
์•„๋งˆ ๊ฑฐ์˜ ๋ชจ๋“  ์ž‘์—…์ด ๋๋‚ฌ์„ ๋•Œ ์ง„ํ–‰ํ•ด์„œ ๊ทธ๋Ÿฐ๊ฒƒ๋„ ์•„๋‹๊นŒ ์‹ถ์—ˆ๋‹ค.
๊ฒฐ๊ตญ ๋‚ด๊ฐ€ ์•ผ๋งค๋กœ ์ž‘์„ฑํ•œ ๋กœ์ง์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ํŒ€์›๋ถ„์ด ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ํ•ด์ฃผ์…จ๋‹ค.
๋‚ด๊ฐ€ ์ž‘์—…ํ–ˆ์–ด์•ผ ํ•˜๋Š” ์˜์—ญ์ด์˜€๋Š”๋ฐ ๋ชปํ•ด์„œ... ์ฃ„์†กํ•œ ๋งˆ์Œ์ด ๋“ค์—ˆ๋‹ค.

React Query๊ฐ€ ๋ญ”๋ฐ...?
์ •๋ง ์–•์žก์•„ ๋ดค๋‹ค.
๊ตฌ์กฐ๊ฐ€ useState, useEffect์™€ ๋น„์Šทํ•ด์„œ ์•ˆ์‹ฌํ–ˆ์—ˆ์ง€๋งŒ...
์ƒ๊ฐ ๋ณด๋‹ค ์ดํ•ดํ•˜๊ณ  ์ ์šฉํ•˜๋Š”๋ฐ ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ๋‹ค.

fetching, caching, ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ์™€์˜ ๋™๊ธฐํ™”๋ฅผ ์ง€์›ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ผ๊ณ  ํ•œ๋‹ค.

๋งํ•˜์ž๋ฉด useEffect, fethch ๋“ฑ์˜ ์—ญํ•  ์ƒ์œ„ ๋ฒ„์ „์ด ์•„๋‹๊นŒ ์‹ถ๋‹ค.

๋˜ํ•œ useQuery๋งŒ ์•Œ๋ฉด ๋˜๋Š”์ค„ ์•Œ์•˜์ง€๋งŒ useMutate๋„ ์žˆ์—ˆ๋‹ค...
get, post, patch ๋“ฑ ์š”์ฒญํ•˜๋Š” ๋ฐฉ์‹์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ์ ์šฉํ•˜๊ณ  ์ž‘์„ฑํ–ˆ๋‹ค.

์ด๋ถ€๋ถ„์—์„œ ๋‹ค๋ฅธ ํŒ€์› ๋ถ„๋“ค์ด ์ž‘์„ฑํ•œ ๋‚ด์šฉ์„ ๋ณด๊ณ  ์ดํ•ดํ•˜๋Š”๋ฐ
์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ๋‹ค.

๊ณต๋ถ€ํ•˜์ž
https://kyounghwan01.github.io/blog/React/react-query/basic/
https://velog.io/@kandy1002/React-Query-ํ‘น-์ฐ์–ด๋จน๊ธฐ

TypeScript error ๋„ˆ๋ฌด ์–ด๋ ค์›Œ...
ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ ์šฉํ•˜๋ฉด์„œ ๋ณ€์ˆ˜์˜ ํƒ€์ž…์ด ๋ช…ํ™•ํ•˜๊ณ  ๊น”๋”ํ•ด์ ธ์„œ ์ข‹์•˜๋‹ค.
ํ—ˆ๋‚˜ eslint, prettier์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋‹ˆ ํ•ญ์ƒ ๋นจ๊ฐ„์ค„์ด ๋–ด๋‹ค.

์ดˆ๋ฐ˜์—๋Š” ํƒ€์ž… ์—๋Ÿฌ ์žก๋Š”๋ฐ ์ž‘์—…ํ•˜๋Š” ์‹œ๊ฐ„ ๋ณด๋‹ค ๋” ๋งŽ์€ ์‹œ๊ฐ„์„ ํˆฌ์žํ•˜๊ธฐ๋„ํ•˜๊ณ 
ํŒ€์›๋ถ„๋“ค๊ป˜ ์š”์ฒญ๋„ ๋งŽ์ด ํ–ˆ์—ˆ๋‹ค.

๋˜ํ•œ ์ด๋ฒคํŠธ, axios ๋“ฑ ํƒ€์ž… ์ฒ˜๋ฆฌ๋ฅผ ๋‹ค๋ฅด๊ฒŒ ํ•ด์•ผํ•˜๋Š” ์ ์—์„œ ์ฐพ์•„๋ณด๊ณ  ์ ์šฉ๊นŒ์ง€ ํ•˜๋Š”๋ฐ
์ด๋˜ํ•œ ์‹œ๊ฐ„ ํˆฌ์ž๋ฅผ ๋งŽ์ด ํ–ˆ๋‹ค.

๊ณต๋ถ€ํ•˜์ž
https://react.vlpt.us/using-typescript/01-practice.html

์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง
์ž‘์„ฑํ•œ ์ฝ”๋“œ๊ฐ€ ์ž˜๋˜๊ณ  ์žˆ๋Š”์ง€, ์ž˜๋ชป ์ž‘์„ฑํ•˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์—†์—ˆ๋‹ค.
์ž‘์—…ํ•œ ์ฝ”๋“œ์— ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ, eslint, prettier, ๋นŒ๋“œํ•  ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒ ํ–ˆ๋Š”๋ฐ
๊ทธ ๋•Œ ์ง„์งœ.. ๊ฑฐ์˜ ๋ฆฌํŒฉํ† ๋ง ํ•ด์ฃผ์…จ๋‹ค.
์ด๋ถ€๋ถ„ ๋˜ํ•œ ๊ฐ์‚ฌํ•˜๊ธฐ๋„ ํ•˜๊ณ  ๋‚ด๊ฐ€ ์•„์ง ๋งŽ์ด ๋ถ€์กฑํ•˜๊ตฌ๋‚˜ ์‹ถ๊ธฐ๋„ ํ–ˆ๋˜ ๋ถ€๋ถ„์ด์˜€๋‹ค.


๐Ÿš€ Try

โœ”๏ธ ์†Œํ†ต

  • ์†”์งํžˆ ๋‚ด๊ฐ€ ๊ณต๋ถ€ํ•˜๋ฉด ํ•ด๊ฒฐ๋œ ๋ฌธ์ œ์ด๊ธฐ๋„ ํ•˜์ง€๋งŒ ๊ถ๊ธˆํ•œ๊ฒŒ ์žˆ๋‹ค๋ฉด ๋ฐ”๋กœ ๋ฐ”๋กœ ์—ฌ์ญค๋ณด์ž.
  • ๋„ˆ๋ฌด ์ž์ฑ…ํ•˜์ง€ ๋ง๊ณ  ๊ธ์ •์  ๋งˆ์ธ๋“œ๋กœ ์ƒ๊ฐํ•ด ๋ณด์ž.
  • ๊ณ ๋ฏผ์ด ์žˆ๋‹ค๋ฉด ํŒ€์›๋ถ„๋“ค๊ป˜ ์ƒ๋‹ด์„ ํ•ด๋ด๋„ ๊ดœ์ฐฎ์•˜์„ ๊ฒƒ ๊ฐ™๋‹ค.

โœ”๏ธ ์ž‘์—…

  • ์ด ๋˜ํ•œ ๋‚ด๊ฐ€ ๊ณต๋ถ€๋ฅผ ๋”ํ•œ๋‹ค๋ฉด ํ•ด๊ฒฐ? ๋˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ๋ฐฐ์›€์—” ๋์ด ์—†๋‹ค. ์‹œ๊ฐ„ ๋  ๋•Œ ํ‹ˆํ‹ˆํžˆ ์š”์ฆ˜ ๊ธฐ์ˆ  ํŠธ๋ Œ๋“œ๋ฅผ ํ™•์ธํ•˜๊ณ  ๊ณต๋ถ€ํ•˜์ž.

โœ๏ธย ๋งˆ์น˜๋ฉฐ

์–ด์ฉŒ๋ฉด ๋‚˜๋Š” ์ง„์งœ ์šด์ด ์ข‹์•˜๋˜ ์ผ€์ด์Šค๋‹ค.
๊ฐ™์ด ํŽ˜์–ด ํ™œ๋™ ํ•˜์…จ๋˜ ๋ถ„๊ป˜ ๋จผ์ € ๊ฐ™์ด ํ•˜์ง€ ์•Š๊ฒ ๋ƒ๋Š” ์ œ์˜๋ฅผ ์ฃผ์…จ๋‹ค.
์ •๋ง ๊ฐ์‚ฌํ–ˆ๊ณ  ํ•œ ํŽธ์œผ๋ก  ๊ฑฑ์ •๋„ ๋งŽ์•˜๋‹ค.

ํ”„๋ก ํŠธ์—”๋“œ ํŒ€์€ ๋‚˜ ํฌํ•จํ•ด์„œ 3๋ช…์ธ๋ฐ ์ด์ค‘ 2๋ถ„์ด ์ •๋ง ์ž˜ํ•˜์…”์„œ
๋‚˜๋Š” ๋ฏผํ๊ฐ€ ๋˜์ง€ ์•Š์„๊นŒ ๋ผ๋Š” ์ƒ๊ฐ์„ ๋งŽ์ด ํ•˜๊ธฐ๋„ ํ–ˆ๊ณ 

๋‚ฏ๊ฐ€๋ฆผ์ด ์‹ฌํ•œ๋ฐ ์ด๋ฏธ ์„œ๋กœ ์•Œ๊ณ  ์žˆ๋Š” ๋‘ ๋ถ„๊ณผ ์ž˜ ์ง€๋‚ผ ์ˆ˜ ์žˆ์„๊นŒ ๋ผ๋Š” ์ƒ๊ฐ๋„ ํ–ˆ๋‹ค.

์ดˆ๋ฐ˜์— ์†Œํ†ต์— ์–ด๋ ค์›€๋„ ์žˆ์—ˆ๋‹ค.
๋Œ€ํ™”๋ฅผ ํ•˜๋Š”๋ฐ ์ดํ•ดํ•  ์ˆ˜ ์—†๋Š” ๋‹จ์–ด๊ฐ€ ๋งŽ์•˜๋‹ค. ์ด๋Ÿฌํ•œ ์ ๊ณผ
์ž‘์—… ์‹œ ํ˜ผ์ž ๋’ค์ณ์ง€๊ณ  ์žˆ๋Š” ๋Š๋‚Œ์— ๋ถˆ์•ˆ๊ฐ ๋“ฑ์œผ๋กœ ์ŠคํŠธ๋ ˆ์Šค ๋ฐ›๊ธฐ๋„ ํ–ˆ๋‹ค.

๋‹คํ–‰ํžˆ๋„ ํŒ€์›๋ถ„๋“ค ๋‹ค ์นœ์ ˆํ•˜๊ฒŒ ์•Œ๋ ค์ฃผ์‹œ๊ณ  ๋„์›€์„ ๋งŽ์ด ์ฃผ์‹œ๊ธฐ๋„ ํ–ˆ๋‹ค.
๋•๋ถ„์— ๋‚ด๊ฐ€ ๋งŽ์ด ๋ฐœ์ „ํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ณ„๊ธฐ๊ฐ€ ๋˜๊ธฐ๋„ ํ–ˆ๋‹ค.(์งฑ์งฑ ํŒ€์›๋ถ„๋“ค๐Ÿ‘)

๋‹ค๋งŒ ์•„์‰ฌ์› ๋˜๊ฑด
์–ด์ฉŒ๋ฉด ๋‚˜์—๊ฒŒ ์ œ์˜ ํ•˜์…จ๋˜ ์ด์œ ?๊ฐ€ ๋””์ž์ธ์ด ๋งŽ์€ ๋น„์ค‘์„ ์ฐจ์ง€ํ–ˆ์„ ํ…๋ฐ
๋””์ž์ธ์„ ์ข€ ๋” ์ž˜ ๋ฝ‘์„ ์ˆ˜ ์žˆ์ง€ ์•Š์•˜์„๊นŒ... ๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค.(์–ด์ฉŒ๋ฉด ์š•์‹ฌ..?)

๋˜ํ•œ ํ”„๋ฆฌํ”„๋กœ์ ํŠธ ๋๋‚˜๊ณ  ์กฐ๊ธˆ ์‰ด ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„์ด ์žˆ์—ˆ๋‹ค.
๊ทธ ๋•Œ ๋ฏธ๋ฆฌ ํ•™์Šต์„ ํ•˜์ง€ ์•Š์•˜๋˜ ์ ์ด ์•„์‰ฌ์› ๋‹ค.

๋‚˜์—๊ฒ ์•„์‰ฌ์› ๋˜ ์ ๋„ ๋งŽ๊ณ  ์ข‹์•˜๋˜ ์ ๋„ ๋งŽ์•˜๋˜ 4์ฃผ์˜€๋‹ค.

๋น„๋ก ๋ฉ”์ธ ํ”„๋กœ์ ํŠธ๋Š” ๋๋‚ฌ์ง€๋งŒ
ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐœ์„ ํ•˜๊ณ  ๋ฆฌํŒฉํ† ๋ง์„ ํ•  ๊ฒƒ ์ด๋‹ค.

6 can do it ํŒ€์› ๋ถ„๋“ค ์ง„์งœ ์ง„์งœ ๊ณ ์ƒํ•˜์…จ์Šต๋‹ˆ๋‹ค!

profile
๐Ÿ’ป ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ๋ชฉํ‘œ๋กœ ์„ฑ์žฅ ์ค‘! (์•Œ์•„๋ดค๋˜ ๋‚ด์šฉ ๋“ฑ์„ ์ •๋ฆฌํ•˜๊ธฐ)

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

comment-user-thumbnail
2023๋…„ 8์›” 17์ผ

์ •๋ง ๊ณ ์ƒ๋งŽ์œผ์…จ๊ณ  ์ž˜ํ•˜์…จ์–ด์š”!!

1๊ฐœ์˜ ๋‹ต๊ธ€