Skip to content
@Team-Mind-Open

Team-Mind-Open

Codeit-sprint-team9-openmind

๋…ธ์…˜ & ๋ฐฐํฌ ์‚ฌ์ดํŠธ

ํŒ€์›

์–‘์ง„์ˆ˜

๋ฐ•๊ฒฝ์„œ

์ „์ˆ˜๋นˆ

์กฐ์œ ๋‹ด

ํ”„๋กœ์ ํŠธ ์ •๋ณด

๊ฐœ๋ฐœ ๊ธฐ๊ฐ„

2023.11.03 ~ 2023.11.17

์ฃผ์š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

eslint / prettier - ๋ฌธ๋ฒ• ๊ต์ •
react-router-dom - ๋ผ์šฐํ„ฐ
axios - api
styled-components - css
mui/material - ํŽ˜์ด์ง€ ๋„ค์ด์…˜
react-spinners - ๋กœ๋”ฉ ์Šคํ”ผ๋„ˆ
react-infinite-scroll-component - ๋ฌดํ•œ ์Šคํฌ๋กค
recoil - ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ

๊ธฐ์ˆ  ์Šคํƒ

๋ฐ์ดํ„ฐ์˜ ํ๋ฆ„

๊ฐœ๋ฐœ ์ค‘ ์žˆ์—ˆ๋˜ ๋ฌธ์ œ ๋ฐ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

๊ธ€๊ผด ๋ฌธ์ œ

  • ์›์ธ
    • ๊ณต์šฉ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์•ˆ์— ์žˆ๋Š” ์š”์†Œ๊ฐ€ ํŒ€์› ๋”ฐ๋ผ์„œ ๋„˜์น˜๋Š” ํ˜„์ƒ์ด ์ผ์–ด๋‚จ
    • ๊ฐ™์€ ๋ธŒ๋ผ์šฐ์ €์ธ ํฌ๋กฌ์—์„œ ๋ณด์ง€๋งŒ ์šด์˜์ฒด์ œ ๋”ฐ๋ผ์„œ ๋‹ค๋ฅด๊ฒŒ ๋‚˜์˜ค๋Š” ํ˜„์ƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Œ
    • ํ”ผ๊ทธ๋งˆ์— ์ง€์ •๋œ Actor ํฐํŠธ๊ฐ€ ํ•œ๊ธ€์„ ์ง€์›ํ•˜์ง€ ์•Š์Œ
    • ๊ทธ๋ž˜์„œ ๊ธฐ๋ณธํฐํŠธ๊ฐ€ ์ ์šฉ๋˜๊ณ  ์œˆ๋„์šฐ์™€ ๋งฅ์˜ ํฌ๋กฌ์—์„œ๋Š” ๊ธฐ๋ณธ ํฐํŠธ๊ฐ€ ๋‹ฌ๋ผ์„œ ๋‹ค๋ฅด๊ฒŒ ๋ณด์ž„
  • ํ•ด๊ฒฐ
    • ํ•œ๊ตญ์–ด ์ง€์›์ด ๋˜๋Š” Pretendard ํฐํŠธ๋กœ ํ†ตํ•ฉ ์ ์šฉ
    • ํ•ด๋‹น ์„œ๋น„์Šค ์–ธ์–ด์™€ ํฐํŠธ๊ฐ€ ์ง€์›ํ•˜๋Š”์ง€ ํ™•์ธํ•ด์•ผํ•œ๋‹ค

์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋กœ๊ทธ์ธ ์‹œ๋„์— ๋Œ€ํ•œ ๊ณ ๋ฏผ

  • ์›์ธ
    • Local Storage์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ id๋ฅผ ์ €์žฅํ•ด์•ผ ํ•˜๋Š”๊ฐ€
    • ๊ทธ๋Ÿฌ๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์ˆ˜๋ฐฑ ๊ฐœ์˜ ๊ณ„์ •์„ ๋งŒ๋“ค๋ฉด Local Storage์˜ ๋ถ€๋‹ด์ด ์ปค์ง„๋‹ค
    • ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•  ๋•Œ๋งˆ๋‹ค name์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๋ฉด ์ข‹๊ฒ ์ง€๋งŒ API์— ๊ทธ๋Ÿฐ ๊ธฐ๋Šฅ์ด ์—†์Œ
    • ๋ชจ๋“  ์‚ฌ์šฉ์ž๋ฅผ ๋ฐ›์•„์„œ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฉด์„œ name์„ ๊ฒ€์ƒ‰ โ†’ ์‚ฌ์šฉ์ž๊ฐ€ ๋งŽ์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ๋œ๋‹ค.
  • ํ•ด๊ฒฐ
    • / ํŽ˜์ด์ง€๋กœ ์ ‘๊ทผ ์‹œ Local Storage๊ฐ€ ์žˆ์œผ๋ฉด list ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ด ๊ณ„์ • ์ƒ์„ฑ ์ฐจ๋‹จ
    • answer ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ด์„œ ์‚ฌ์šฉ์ž๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์ด์šฉํ•˜๋„๋ก ์—๋Ÿฌ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ž

์—๋Ÿฌ ์ฒ˜๋ฆฌ๋กœ ํ™”๋ฉด ์ด๋™ํ•  ์‹œ ํ™”๋ฉด์ด ๋ Œ๋”๋ง ๋˜๋Š” ๋ฌธ์ œ

  • ์›์ธ
    • post ํŽ˜์ด์ง€์—์„œ ์ž˜๋ชป๋œ ์ ‘๊ทผ์„ ์‹œ๋„ โ†’ post ํŽ˜์ด์ง€ ์ด๋™ โ†’ list๋กœ ์ด๋™
    • ๊ฒ€์‚ฌํ•˜๊ณ  ์ด๋™ํ•˜๋Š” ํ•จ์ˆ˜๊ฐ€ useEffect ํ•จ์ˆ˜ ๋‚ด๋ถ€์— ์žˆ๋‹ค ๋ณด๋‹ˆ ๋ Œ๋”๋ง์„ ํ•˜๋ฉด์„œ ๋™์‹œ์— ์‹คํ–‰ํ•จ
    • post ํŽ˜์ด์ง€ ํ•œ ๊ณณ์—์„œ ์ž˜๋ชป๋œ ์ ‘๊ทผ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋‹ค๋ค„์ฃผ๋‹ค ๋ณด๋‹ˆ post ํŽ˜์ด์ง€์— ์ž ๊น์ด๋ผ๋„ ๋“ค๋ฅด๊ฒŒ ๋จ
  • ํ•ด๊ฒฐ
    • ๋ฐ”๋กœ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ์ค‘๊ฐ„์— ์—๋Ÿฌ ์ฒ˜๋ฆฌ๋ฅผ ๋ถ„๋ฆฌํ•ด์„œ route์—์„œ ์ฒ˜๋ฆฌํ•จ
    • ์ž˜๋ชป๋œ ์ ‘๊ทผ ์‹œ๋„ ์‹œ post ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋กœ ์ด๋™

ํŽ˜์ด์ง€๋„ค์ด์…˜ index 1๋กœ ๊ณ ์ •๋˜๋Š” ํ˜„์ƒ

  • ์›์ธ
    • ListPage๋ผ๋Š” ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์— CardList, Paginator๋ผ๋Š” ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์กด์žฌํ•˜๋Š” ์ƒํ™ฉ
    • ํŠน์ • ํŽ˜์ด์ง€๋ฅผ ํด๋ฆญํ•˜๋ฉด request ํ˜ธ์ถœ๋กœ ๋กœ๋”ฉ์ด ๋ฐœ์ƒ โ†’ loading ์ฒ˜๋ฆฌ๋ฅผ ListPage ์ปดํฌ๋„ŒํŠธ์—์„œ return๋ฌธ์œผ๋กœ ์ฒ˜๋ฆฌํ•ด๋ฒ„๋ ค์„œ ์–ผ๋ฆฌ ๋ฆฌํ„ด์œผ๋กœ ์ธํ•ด Paginator๊ฐ€ ์–ธ๋งˆ์šดํŠธ ๋˜์—ˆ๋‹ค๊ฐ€ ๋‹ค์‹œ ๋งˆ์šดํŠธ ๋จ
    • ๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ถˆ๋Ÿฌ์™€์ง€๋ฉด์„œ ๋กœ๋”ฉ์ด ๋ฐœ์ƒํ•  ๋•Œ๋งˆ๋‹ค page index์˜ state๊ฐ€ 1๋กœ ์ดˆ๊ธฐํ™”๋˜์–ด์„œ 1๋กœ ๊ณ ์ •๋˜๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ•จ
  • ํ•ด๊ฒฐ
    • ๋ฐ์ดํ„ฐ๊ฐ€ ํ™”๋ฉด์— ๋ณด์ด๋Š” ๋ถ€๋ถ„์€ CardList ์ปดํฌ๋„ŒํŠธ์ด๊ธฐ์—
    • ๋กœ๋”ฉ์˜ ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ props๋ฅผ ํ†ตํ•ด CardList๋กœ ๋„˜๊ฒจ์„œ ์ฒ˜๋ฆฌํ•จ

์ข‹์•„์š” ๋ฒ„ํŠผ ์—ฐ์† ํด๋ฆญ

  • ์›์ธ
    • ์ข‹์•„์š” ๋ฒ„ํŠผ์ด๋‚˜ ์‹ซ์–ด์š” ๋ฒ„ํŠผ์„ ์—ฐ์†์œผ๋กœ ํด๋ฆญํ•˜๋ฉด API ํ˜ธ์ถœ์ด ์—ฐ์†์œผ๋กœ ์ผ์–ด๋‚˜ ์˜ค๋ฅ˜ ๋ฐœ์ƒ
    • ์—ฐ์†์œผ๋กœ ํด๋ฆญํ•˜๋ฉด ์–ด๋А ์ •๋„ ์ง€์—ฐ๋˜์–ด ์‹คํ–‰ํ•ด์•ผ ํ•˜์ง€ ์•Š์„๊นŒ?
  • ํ•ด๊ฒฐ
    • debounce ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ์ž…๋ ฅ์ด ์ง€์—ฐ๋˜์–ด๋„ 1๋ฒˆ๋งŒ ์ฒ˜๋ฆฌ๋˜๊ฒŒ ํ•จ

์ผ€๋ฐฅ ๋ฒ„ํŠผ ๋ฐ”๊นฅ Div ํด๋ฆญ ์‹œ ์•ˆ ์‚ฌ๋ผ์ง€๋Š” ํ˜„์ƒ

  • ์›์ธ
    • ์ผ€๋ฐฅ ๋ฒ„ํŠผ์ด postCard ์•ˆ์— ์žˆ์–ด ๋ฐ–์„ ํด๋ฆญํ•˜๋ฉด postConent๋กœ ์ธ์‹๋จ
  • ํ•ด๊ฒฐ
    • ๊ฐ€์žฅ ๋ฐ–์— ์žˆ๋Š” div์— onClick ํ•จ์ˆ˜๋ฅผ ๋„ฃ์–ด div๋ฅผ ํด๋ฆญํ•˜๋ฉด ์‚ฌ๋ผ์ง
    • ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ๋™์ž‘ํ•˜๋ฉด ๋‹ค๋ฅธ card์˜ ์ผ€๋ฐฅ ๊ตฌ๋ถ„์ด ์–ด๋ ค์›€
    • rocoil์œผ๋กœ id๊ฐ’์„ ์ €์žฅํ•ด card id์™€ ๋น„๊ตํ•ด ํ•ด๊ฒฐ

์„œ๋น„์Šค ์‹œ์—ฐ

๊ธฐ๋ณธ ๋™์ž‘

๋ฐ˜์‘ํ˜•

์—๋Ÿฌ ์ฒ˜๋ฆฌ

๋‹คํฌ ๋ชจ๋“œ

Popular repositories Loading

  1. open-mind open-mind Public

    JavaScript 2

  2. .github .github Public

Repositories

Showing 2 of 2 repositories
  • .github Public
    0 0 0 0 Updated Jun 27, 2024
  • open-mind Public
    JavaScript 0 2 0 0 Updated Dec 4, 2023