Projects

    [์žฌ๋ฃŒ ์ œ๋กœ์›จ์ด์ŠคํŠธ] Refactoring : Context ํ™œ์šฉํ•˜์—ฌ props drilling ์ •๋ฆฌ

    [์žฌ๋ฃŒ ์ œ๋กœ์›จ์ด์ŠคํŠธ] Refactoring : Context ํ™œ์šฉํ•˜์—ฌ props drilling ์ •๋ฆฌ

    ํ˜„ ํ”„๋กœ์ ํŠธ์—์„œ props drilling ๊ฐ€์žฅ ์‹ฌํ•œ ๊ณณ์€ Detail ์ปดํฌ๋„ŒํŠธ์ž…๋‹ˆ๋‹ค. ์•„๋ž˜ ์ด๋ฏธ์ง€๋ฅผ ๋ณด๋ฉด, ์ตœ์ƒ์œ„ ํŽ˜์ด์ง€ ์ปดํฌ๋„ŒํŠธ์—์„œ ์ตœํ•˜์œ„ SwiperRecipeItem ๊นŒ์ง€ ๋ณด๋‚ด๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์ค‘๊ฐ„์— ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋“ค์ด ์ ˆ๋ฐ˜์ด ๋„˜์œผ๋ฏ€๋กœ ๋ถˆํ•„์š”ํ•œ props drilling์ด๋ผ ํŒ๋‹จํ–ˆ๊ณ  ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด context ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌ์•กํŠธ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๋ณด๋ฉด context ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์ปดํฌ๋„ŒํŠธ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋–จ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ˆœํžˆ props drilling ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋ผ๋ฉด ์ปดํฌ๋„ŒํŠธ ํ•ฉ์„ฑ์„ ๊ถŒ๊ณ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ €ํฌ ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ Detail ์ปดํฌ๋„ŒํŠธ์— ํ•œํ•ด์„œ๋งŒ context๋ฅผ ์ ์šฉํ•  ๊ฒƒ์ด๋ฏ€๋กœ ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋–จ์–ด์ง€์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ ํŒ๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค. Detail page ์ปดํฌ๋„ŒํŠธ์—..

    [์žฌ๋ฃŒ ์ œ๋กœ์›จ์ด์ŠคํŠธ] axios interceptors ์‚ฌ์šฉ ์ด์œ 

    axios interceptors ์‚ฌ์šฉ ์ด์œ  1) base url ์ค‘๋ณต ๋ฐฉ์ง€ 2) ์š”์ฒญ๋งˆ๋‹ค ๋™์ผํ•œ content-type , token ๊ฐ™์€ ํ—ค๋”๊ฐ’ ์ฒ˜๋ฆฌ 3) ์‘๋‹ต ๋ฆฌํ„ด๊ฐ’ ์„ค์ •๊ณผ ์˜ค๋ฅ˜ ๋ฐœ์ƒ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ export const instance = axios.create({ baseURL: process.env.REACT_APP_API, headers: { "Content-Type": "application/json", withCredentials: true, }, }); instance.interceptors.request.use( function (config) { const accessToken = getCookie("accessToken"); const refreshToken = getCookie("..

    [์žฌ๋ฃŒ ์ œ๋กœ์›จ์ด์ŠคํŠธ] Refactoring : ์†Œ์…œ ๋กœ๊ทธ์ธ ์ค‘๋ณต ์ฝ”๋“œ ์ œ๊ฑฐ

    [์žฌ๋ฃŒ ์ œ๋กœ์›จ์ด์ŠคํŠธ] Refactoring : ์†Œ์…œ ๋กœ๊ทธ์ธ ์ค‘๋ณต ์ฝ”๋“œ ์ œ๊ฑฐ

    ํ˜„์žฌ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์ ํŠธ๋Š” ์„ธ ์ข…๋ฅ˜์˜ ์†Œ์…œ ๋กœ๊ทธ์ธ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์นด์นด์˜ค, ๋„ค์ด๋ฒ„, ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ์ž…๋‹ˆ๋‹ค. ๊ฐ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์„ ์œ„ํ•ด ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ๊ณผ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ํŽ˜์ด์ง€๋กœ ๋ณด๋‚ด๋Š” ์ปดํฌ๋„ŒํŠธ (3๊ฐœ) ๊ฐ€ ์žˆ๊ณ  ๋กœ๊ทธ์ธ api ์š”์ฒญํ•˜๊ณ  ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์ฟ ํ‚ค์— ์ €์žฅํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ (3๊ฐœ) ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฟ ํ‚ค์— ์ €์žฅํ•˜๋Š” ๋ถ€๋ถ„์„ util ํ•จ์ˆ˜๋กœ ๋”ฐ๋กœ ๋นผ๊ณ  ๊ทธ ์™ธ ์ค‘๋ณต๋˜๋Š” ๋ถ€๋ถ„๋“ค๋„ ์ •๋ฆฌํ•ด์„œ 2๊ฐœ์˜ ์ปดํฌ๋„ŒํŠธ๋กœ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ค‘๋ณต ์ฝ”๋“œ ์ œ๊ฑฐ ์ „ ์ค‘๋ณต ์ฝ”๋“œ ์ œ๊ฑฐ ํ›„ ์ค‘๋ณต ์ฝ”๋“œ ์ œ๊ฑฐํ•˜๊ณ  ์ฟ ํ‚ค๋ฅผ ์„ธํŒ…ํ•ด์ฃผ๋Š” ๋ถ€๋ถ„์„ ๋”ฐ๋กœ ๋บ๋”๋‹ˆ ๊ฐ€๋…์„ฑ๋„ ์ข‹์•„์ง€๊ณ  ์ฝ”๋“œ๋„ ๊น”๋”ํ•ด์กŒ์Šต๋‹ˆ๋‹ค! ๋กœ๊ทธ์ธ api ๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒƒ๋„ ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ถ„๋ฐฐํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ request.js ์—์„œ ์ž‘์—…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ๋ถ€ํ„ฐ ๊น”๋”ํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ์ข‹์ง€๋งŒ, ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค ๋ณด๋ฉด ๊ธฐ๋Šฅ ..