๐Ÿ”ฅ

๋Œ“๊ธ€ ์ž‘์„ฑ ๋ฐ ์ข‹์•„์š” ๊ธฐ๋Šฅ ๊ตฌํ˜„

๋‹ด๋‹น์ž
๋‚ ์งœ
Oct 29, 2021 โ†’ Oct 31, 2021
์ƒํƒœ
์™„๋ฃŒ
์†์„ฑ
๐Ÿ’ป Task
์†์„ฑ 1
๋Œ“๊ธ€ ์ถ”๊ฐ€๋ฅผ ์œ„ํ•œ API ์š”์ฒญ ์‹œ Authorization ์ž˜ ์ด๋ค„์ง€์ง€์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Œ
  • Token์€ ๋ฐ›์•„์™€์„œ JSON.parse ๋ฅผ ํ•ด์ฃผ์ง€์•Š์•„์„œ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ์˜€๊ณ , utils์˜ API ๋กœ์ง ์ˆ˜์ •์„ ํ†ตํ•ด ํ•ด๊ฒฐํ•จ
 
๋Œ“๊ธ€ ์ถ”๊ฐ€๋Š” ๋˜๋‚˜ ํ™”๋ฉด์— ๋ Œ๋”๋ง ์‹œ ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•ด์•ผ๋งŒ ์ ์šฉ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Œ
  • useEffect๋กœ ๋Œ“๊ธ€์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ์‹œํ•˜์—ฌ ๋ณ€๊ฒฝ ๋  ๋•Œ๋งˆ๋‹ค API๋ฅผ ๋ฐ›์•„์˜ค๊ฒŒํ–ˆ์—ˆ๋Š”๋ฐ useState๋„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋‹ค๋ณด๋‹ˆ ๋ฌดํ•œํžˆ API๋ฅผ ๋ฐ›์•„์˜ค๋Š” ์ด์Šˆ ๋ฐœ์ƒ
  • ๋Œ“๊ธ€ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ›์•„์˜ค๋Š” API์˜ ๊ฒฝ์šฐ useEffect์˜ ๋‘๋ฒˆ์งธ ์ธ์ž๋กœ []๋ฅผ ๋„ฃ์–ด์ฃผ์–ด ์ฒ˜์Œ ๋ Œ๋”๋ง ๋œ ํ›„ ํ•œ๋ฒˆ๋งŒ ๋ฐ›์•„์˜ค๊ฒŒํ–ˆ๊ณ , ์ดํ›„ ์ถ”๊ฐ€๋˜๋Š” ๋Œ“๊ธ€์˜ ๊ฒฝ์šฐ useState๋ฅผ ์ด์šฉํ•ด ๊ด€๋ฆฌํ•ด์ฃผ๋‹ˆ ๋ณ€๊ฒฝ ๋ถ€๋ถ„๋งŒ ๋ Œ๋”๋ง ๊ฐ€๋Šฅ
 
get์ด๋‚˜ put์„ ์ด์šฉํ•˜๋ฉด body๋กœ request๋ฅผ ๋ฐ›์•„์˜ฌ์ˆ˜ ์žˆ์ง€๋งŒ delete๋Š” ๋ชป๋ฐ›์•„์˜ด!!
  • post ์š”์ฒญ์œผ๋กœ ๋Œ“๊ธ€์„ ์ƒ์„ฑํ•  ๋•Œ์™€ delete ์š”์ฒญ์œผ๋กœ ๋Œ“๊ธ€์„ ์‚ญ์ œํ•  ๋•Œ, ํ† ํฐ์„ ์ด์šฉํ•œ ์ธ์ฆ ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผํ•œ๋‹ค
  • ๋Œ“๊ธ€ ์ƒ์„ฑ์„ ์ž˜ ํ•ด๊ฒฐํ–ˆ๊ณ  ์‚ญ์ œ๋„ ๋˜‘๊ฐ™์€ ๋กœ์ง์œผ๋กœ ์ž‘์„ฑํ–ˆ๋Š”๋ฐ ๊ณ„์† ํ† ํฐ์ด ์•ˆ๋„˜์–ด๊ฐ€์„œ ์—๋Ÿฌ๊ฐ€ ์…๊ฒผ๋‹ค...
  • ์ด์œ ๋ฅผ ๋ชฐ๋ผ์„œ ์ฐพ์•„๋ณด๋˜ ์ค‘ ์•Œ๊ฒŒ๋œ ์‚ฌ์‹ค Delete ๋ฉ”์†Œ๋“œ๋Š” ํ—ค๋”์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ๋•Œ, ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋ณด๋‚ด์ฃผ์–ด์•ผํ•œ๋‹ค...์ฆ‰ Delete ๋ฉ”์†Œ๋“œ๋Š” params(๋งค๊ฐœ๋ณ€์ˆ˜)๊ฐ€ ํ•„์š”ํ•˜๊ณ  data๋ฅผ ๊ทธ๋Œ€๋กœ ๋ณด๋‚ด๋Š” ๋ฐฉ์‹์„ ํ—ˆ์šฉํ•˜์ง€์•Š๋Š”๋‹ค
  • api utils Auth ์ˆ˜์ •์„ ํ†ตํ•ด ํ•ด๊ฒฐ!!
// axios.delete(URL, {params: {foo: 'bar'}}) axios.delete(URL, { headers: { Authorization: authorizationToken }, data: { source: source } });
// post ์š”์ฒญ์€ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ์‹ ๊ฐ€๋Šฅ axios.post(URL, { comment: newComment, postId: Id }, { headers: { Authorization: authorizationToken })
// utils Api.js ์ˆ˜์ • export const Authorization = async (url, method, data) => { const { tokenId } = JSON.parse(sessionStorage.getItem('authUser')) return await axios({ url, method, headers: { Authorization: Bearer ${tokenId} }, data: data, }) .then((res) => res.data) .catch((e) => console.error(e)) }
notion image
 
useState๋กœ ์ƒํƒœ ๊ด€๋ฆฌ ์‹œ ์—…๋ฐ์ดํŠธ ๊ด€๋ จ ์ด์Šˆ
  • setValue์— ์ƒˆ๋กœ์šด ๊ฐ’์„ ๋„ฃ์–ด value์— ๋„ฃ์–ด์ฃผ๋Š” ๊ณผ์ •์„ ์ง„ํ–‰ ์ค‘ value๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ๋ฐ”๋กœ console์„ ์ฐ์–ด๋ดค๋Š”๋ฐ ๊ณ„์† initialValue๊ฐ€ ์ฐํ˜”๋‹ค
  • ๊ทธ๋ž˜์„œ ๊ฐ’์„ ์ž˜ ๋ชป๋ฐ›์•„์˜ค๋Š”๊ตฌ๋‚˜๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์–ด ๊ฐ’์„ ์ฐ์–ด๋ณด๋‹ˆ ์ž˜ ๋ฐ›์•„์˜ค๊ธดํ–ˆ๋‹คโ€ฆ
  • ํ•œ 2์‹œ๊ฐ„ ๋„˜๊ฒŒ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ๊ธฐ๋™1ํŒ€์— ์กฐ์–ธ์„ ๊ตฌํ–ˆ๊ณ , ๋ Œ๋”๋ง ๊ด€๋ จ ์ƒˆ๋กœ์šด ์‚ฌ์‹ค์„ ์•Œ๊ฒŒ ๋๋‹คโ€ฆ
  • ์ƒํƒœ ์—…๋ฐ์ดํŠธ ์‹œ setValue๋ฅผ ํ•˜๋ฉด ์—…๋ฐ์ดํŠธ ๋˜๋Š”๊ฒŒ ๋งž๊ธดํ•˜๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ทธ ๋ฐ”๋กœ ์•„๋ž˜ ์ค„์— ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•  ๊ฒฝ์šฐ, ๊ทธ value๋Š” ์ด๋ฏธ ์ฒ˜์Œ์— value๋ฅผ ์„ ์–ธํ•˜๊ณ  initialValue๊ฐ€ ํ• ๋‹น๋˜์–ด์žˆ๋Š” ์ƒํƒœ์ด๋‹ค.
  • ์ฆ‰ ์•„์ง ๋ฆฌ๋ Œ๋”๋ง์ด ์ผ์–ด๋‚˜์ง€์•Š์€ ์ƒํƒœ!
  • ๊ทธ๋ž˜์„œ ๊ทธ ๊ฐ’์„ ๊บผ๋‚ด์„œ ๋ Œ๋”๋œ ํ›„ ๋ฐ”๊นฅ์ชฝ์—์„œ console์„ ์ฐ์–ด๋ณด๋ฉด ์ œ๋Œ€๋กœ ๊ฐ’์ด ์—…๋ฐ์ดํŠธ ๋œ ์‚ฌ์‹ค์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹คโ€ฆ
  • ์ฆ‰ setValue๋ฅผ ์ด์šฉํ•ด ๊ฐ’์„ ๋”ฐ๋กœ ํ• ๋‹นํ•ด์ค€ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ทธ์ € ์—…๋ฐ์ดํŠธ๋งŒ ํ•ด์ค€ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฆฌ๋ Œ๋”๋ง์ด ์ผ์–ด๋‚˜๊ธฐ ์ „์—๋Š” ๊ทธ ์ด์ „ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์ด๋‹คโ€ฆ
  • ๋ฐ์ดํ„ฐ์˜ ํ๋ฆ„์ด๋ž€ ์–ด๋ ต๋‹ค..์•„์ง ์™„๋ฒฝํ•œ ๊ฒฐ๋ก ์„ ๋‚ด๋ฆฌ์ง€๋Š” ๋ชปํ•˜๊ฒ ๋‹ค. ๊ณต๋ถ€ํ•ด๋ณด๊ณ  ๋‹ค์‹œ ์ •๋ฆฌํ•ด๋ด์•ผ๊ฒ ๋‹ค.