๐Ÿฅฆ๋ธŒ๋กœ์ปฌ๋ฆฌ๐Ÿฅฆ ํ”„๋กœ์ ํŠธ 4์ผ์ฐจ

Maria Kimยท2021๋…„ 12์›” 4์ผ
0
post-custom-banner

์˜ค๋Š˜ ์•„์นจ์€ ๋ฉ˜ํ† ๋‹˜์ด ์šฐ๋ฆฌํŒ€ Standup meeting์— ์ฐธ๊ด€ํ•˜์‹œ๋ฉฐ ์‹œ์ž‘๋๋‹ค.

Standup Meeting

๋ฐฑ์—”๋“œ

  • ์–ด์ œ ์ดˆ๊ธฐ์„ธํŒ…,models.py ์ž‘์„ฑํ›„ merge์™„๋ฃŒ
  • API ๊ธฐ๋Šฅ์ •์˜์„œ ์ž‘์„ฑ ์˜ˆ์ •
  • api ์ž‘์—… ์‹œ์ž‘ ์˜ˆ์ •
  • ์–ด์ œ DB ๋ฐ์ดํ„ฐ๋ฅผ ํ†ต์ผํ™”์‹œํ‚ค๊ธฐ์œ„ํ•œ ๊ตฌ๊ธ€์Šคํ”„๋ ˆ๋“œ ์‹œํŠธ์— CSV ํŒŒ์ผ ์ž‘์„ฑ ๋ฐ ๋”๋ฏธ๋ฐ์ดํ„ฐ ๋„ฃ๊ธฐ

ํ”„๋ก ํŠธ

  • ์˜ค๋Š˜๋ถ€ํ„ฐ ํ”„๋ก ํŠธ ์Šค์ผ€์ค„
    -> ์•„์นจ๋ฏธํŒ…
    -> ์˜คํ›„ - ๊ฐ์ž ์ฝ”๋”ฉ
    -> ์ €๋… 8์‹œ ์ดํ›„ - ํ”„๋ก ํŠธ ๋ชจ๋‘ ๋ชจ์—ฌ์„œ ์ฝ”๋”ฉ, ๋ฏธํŒ…
    - ์ด๋•Œ ํ•˜๋ฃจ ๋™์•ˆ ์žˆ์—ˆ๋˜ ๋Œ€๋ถ€๋ถ„์˜ ํ† ๋ก , ์งˆ์˜์‘๋‹ต์„ ํ•จ
    - ํ•˜์ง€๋งŒ ๋‹น์—ฐํžˆ ํ•„์š”ํ•  ๋•Œ๋Š” ๊ธด๊ธ‰ํšŒ์˜, ์งˆ๋ฌธ ๊ฐ€๋Šฅ!!
  • ๋ฉ”์ธ ํŽ˜์ด์ง€๊ฐ€ ์ƒํ’ˆ ๋ฆฌ์ŠคํŠธ ํŽ˜์ด์ง€์ด๊ธฐ ๋•Œ๋ฌธ์— ์ƒ์„ธ ๋ฆฌ์ŠคํŠธ ์นดํŽ˜๊ณ ๋ฆฌ๋ณ„ url ๋ณ€๊ฒฝ ์˜ˆ์ •
    -> query ์‚ฌ์šฉํ•ด์•ผ ํ•  ์˜ˆ์ •
    -> useParams / useLocation ์„ ์ฐพ์•„๋ณผ ์˜ˆ์ •
    -> /products/:id (์ƒํ’ˆ ์ƒ์„ธํŽ˜์ด์ง€ url ์˜ˆ์ •)
  • modal ์ปดํฌ๋„ŒํŠธ ๋งŒ๋“ค ์˜ˆ์ •

๋ฉ˜ํ† ๋‹˜์˜ ๋ฆฌ๋ทฐ

  • ์‚ฌํ›„ log ์ž‘์„ฑ์„ ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์€ ์ข‹์Œ
  • ์ถ”๊ฐ€๋กœ ์‚ฌ์ „ log ๋„ ํ•˜๋ฉด,
    -> ๋ฏธ๋ฆฌ ๋ธ”๋กœ์ปค์— ๋Œ€ํ•ด์„œ ํŒ€๋“ค์ด ๋ชจ๋‘ ๊ณ ๋ฏผํ•ด ๋ณผ ์ˆ˜ ์žˆ์Œ
    -> ๋ฏธํŒ…์ด ๋” ์˜๋ฏธ ์žˆ๊ณ  ๋‹ค๋ฅธ ํŒ€์›๋“ค์ด ๋นจ๋ฆฌ ๋‹ค๋ฅธ ํŒ€์›๋“ค์˜ ๋ง์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Œ
  • ๋‚˜์ค‘์— merge ๋œ ๊ธฐ๋Šฅ๋ผ๋ฆฌ ํ•ฉ์น  ๋•Œ๋Š” branch ๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์„œ ์—ฐ๊ฒฐ ํ›„ ํ•ฉ์น˜๋Š” ๊ฒƒ์ด ์ข‹์Œ
  • ์ฃผ์„ -> ์ตœ๋Œ€ํ•œ ์—†์œผ๋ฉด ์ข‹์ง€๋งŒ TO DO, TO FIX ๋ถ€๋ถ„์€ ์ฃผ์„ ์ฒ˜๋ฆฌํ•ด์ค˜๋„ ๊ดœ์ฐฎ์Œ

ํ”„๋ก ํŠธ ๋ฏธํŒ…

  • common.scss ์— variables ๋ฅผ ๊ฐ™์ด ์ž‘์„ฑํ–ˆ๋Š”๋ฐ ๋ถ„๋ฆฌํ•ด์„œ ๋‹ค์‹œ push ํ•  ์˜ˆ์ •์ž„.
    • pull ๋ฐ›์•„์„œ ์ง€๊ธˆ๊นŒ์ง€, scss ์—์„œ common ๋ถˆ๋Ÿฌ์„œ ์‚ฌ์šฉํ•œ ๋ถ€๋ถ„ variables ๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ํ•จ
    • ์ด์œ : variables์— ์žˆ๋Š” ๋ณ€์ˆ˜๋งŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ถˆ๋Ÿฌ์•ผ ํ•˜๋Š”๋ฐ,
      common stle์ด ๋“ค์–ด์žˆ๋Š” common ํŒŒ์ผ์„ ๊ณ„์† ๋ถˆ๋Ÿฌ์„œ ์‚ฌ์šฉํ•˜๋ฉด css ๋ถ€๋ถ„๋“ค์ด ๋Š์ž„์—†์ด ์ ์šฉ๋ผ์„œ ๋‚˜์ค‘์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์Œ
    • common.scss๋Š” ์ตœ์ƒ์œ„์ธ index.js์— ํ•œ ๋ฒˆ๋งŒ ์ ์šฉํ•˜๊ธฐ
  • 8์‹œ ๋ชจ๊ฐ์ฝ” ํ•  ๋•Œ ์˜๋…ผํ•  ๋ถ€๋ถ„์ด ์žˆ์œผ๋ฉด ๋ฏธ๋ฆฌ ๋ชจ๊ฐ์ฝ” ์นด๋“œ์— ์ž‘์„ฑํ•ด์„œ ๋ฏธ๋ฆฌ ๋‹ค๋ฅธ ํŒ€์›์ด ๋ณด๊ณ  ๊ณ ๋ฏผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ธฐ

Rest API ์„ธ์…˜

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

๋ฐฑ์—”๋“œ์™€ URL ๋ฏธํŒ…

  • ์ƒ์„ธ๋ฆฌ์ŠคํŠธ
    • ํ”„๋ก ํŠธ : menu, category, sort ๊ฐ’์„ ์ €์žฅํ–ˆ๋‹ค๊ฐ€
    • ๋ฐฑ์—์„œ ์ •ํ•ด์ง€๋Š” URL ๋กœ ๋งŒ๋“ค์–ด์„œ ๋ณด๋‚ด๊ธฐ
      • ๋ฐฑ์ด ์•„์ง web api ์™„๋ฃŒ ์ „์ด๋ผ
        ๋จผ์ € UI๊ฐ€ ์™„์„ฑ๋œ ํ”„๋ก ํŠธ์—์„œ
        ๋ฐฑ์—์„œ ํ•„์š”ํ•œ ํ‚ค๊ฐ’๊ณผ endpoint๋กœ ์‚ฌ์šฉํ•  ๋ถ€๋ถ„์„ ๊ณ ๋ คํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์งœ์„œ ๋ฐฑ์—”๋“œ๊ฐ€ url/ api ์™„์„ฑ๋˜๋ฉด
        fetch ํ•˜๋Š” ๋ถ€๋ถ„๋งŒ ์กฐ๊ธˆ ์ˆ˜์ •ํ•ด์„œ ์‚ฌ์šฉํ•˜๊ธฐ
    • NAV ์—์„œ ๋ฉ”๋‰ด ํด๋ฆญ ์‹œ ์–ด๋–ค ๋ฉ”๋‰ด ํด๋ฆญํ–ˆ๋Š”์ง€(query ๋ณ€๊ฒฝํ•ด์„œ ๋ณด๋‚ด ๋‹ฌ๋ผ๊ณ  ํ•˜๊ธฐ
      • path ๋ถ€๋ถ„ ?์ฟผ๋ฆฌ ๋กœ ๊ฐ’ ๋งŒ๋“ค์–ด์„œ ๋ณด๋‚ด๊ธฐ
    • product ๋ˆŒ๋ €์„ ๋•Œ product ID ๋งŒ ๋„˜๊ฒจ์ฃผ๋ฉด ๋จ
      • product ID ๋Š” ์ „์ฒด(๋ชจ๋“  ๋ฉ”๋‰ด๋“ค ๋‹ค ํ•ฉ์นœ ๋ฐ์ดํ„ฐ์—์„œ) ์œ ์ผํ•จ
      • product ID ๋งŒ ๋ณด๋‚ด๋ฉด ์ƒ์„ธ ํŽ˜์ด์ง€ ๋ฐ์ดํ„ฐ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ
  • ์žฅ๋ฐ”๊ตฌ๋‹ˆ
    • ์ฃผ๋ฌธํ•œ product Id ๋งŒ ํ† ํฐ๊ณผ ํ•จ๊ป˜ ๋ณด๋‚ด๋ฉด -> ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์•„์ดํ…œ๋“ค ์ „์ฒด ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ
    • ํ”„๋ก ํŠธ๋Š” product Id๋งŒ ์ค€๋น„ํ•˜๋ฉด ๋จ
    • ์ƒ์˜จ, ๋ƒ‰์žฅ ์ƒํ’ˆ๋“ค์€ ๋ถ„๋ฅ˜๋˜์ง€ ์•Š๊ณ  ํ†ต์œผ๋กœ ๋ณด๋‚ด๊ธฐ๋กœ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— -> ํ”„๋ก ํŠธ์—์„œ ๋ถ„๋ฅ˜ํ•ด์„œ ๋ณด์—ฌ์ค˜์•ผ ํ•จ
    • ์ˆ˜๋Ÿ‰๋ณ€๊ฒฝ ๋ถ€๋ถ„, ์‚ญ์ œ ๋ถ€๋ถ„์€ ๋‚˜์ค‘์— ๋‹ค์‹œ ์ด์•ผ๊ธฐํ•˜๊ธฐ
  • ์ฃผ๋ฌธ์„œ
    • ์ฃผ๋ฌธ ๋ˆ„๋ฅด๋ฉด ์ฃผ๋ฌธ์ด ์™„๋ฃŒ๋˜๊ณ 
    • ์ฃผ๋ฌธ์„œ ID ๋ฐ›์•„์„œ ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋Š” ์•Œ๋žŒ ๋œจ๊ฒŒ ํ•˜๊ธฐ
    • ์žฅ๋ฐ”๊ตฌ๋‹ˆ์—์„œ ๋ฐฉ๊ธˆ ์ฃผ๋ฌธํ•œ ๋ถ€๋ถ„์€ ์‚ญ์ œ๋˜๊ณ (ํ”„๋ก ํŠธ ์ž…์žฅ์—์„œ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ํŽ˜์ด์ง€์—์„œ ์›๋ž˜ ํ•˜๋˜ fetch ๊ทธ๋Œ€๋กœ ์‹คํ–‰ํ•˜๋ฉด ๋จ)
    • ์žฅ๋ฐ”๊ตฌ๋‹ˆ ํ™”๋ฉด์œผ๋กœ ๊ฐ€๋ฉด ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋‚จ์€ ์•„์ดํ…œ๋“ค๋งŒ ๋ณด์ž„

์„ฑ์žฅํ•œ ์ฝ”๋“œ

productList

์ฒ˜์Œ์˜ ๊ณ„ํš

๋ณ€ํ™”๋œ ๋ถ€๋ถ„

  • route ๋ถ€๋ถ„์ด ๋งŽ์•˜๋Š”๋ฐ ์ƒ๊ฐํ•ด ๋ณด๋‹ˆ route ๋Š” path ๋ฅผ ๋ณ€๊ฒฝํ•ด ์ฃผ๋Š” ๊ฒƒ์ด๊ณ  ํ”„๋ก ํŠธ ๋‚ด๋ถ€๊ฐ€ ๋ณ€ํ™”๋  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๊ณ 
    ์•ˆ์— ๋ถ€๋ถ„๋งŒ ๋ณ€๊ฒฝ๋˜๋ฉด ๋Œ€๋ถ€๋ถ„ fetch ๋ฉด ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค.
    (๋ฐฑ์—”๋“œ์™€ ํ†ต์‹ ํ•˜๋Š” ๊ฒƒ์ด ์ฒ˜์Œ์ด๋‹ค ๋ณด๋‹ˆ ์ฐธ ๋งŽ์ด ๋‹ค๋ฅด๋‹ค. ์ด๋Ÿฐ ๋ถ€๋ถ„์„ ์•Œ๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด ์ •๋ง ์ฆ๊ฒ๋‹ค!!!)

์นดํ…Œ๊ณ ๋ฆฌ ๊ณ ๋ฅด๋Š” ์ฝ”๋“œ(ํ•œ๊ฐœ๋งŒ ์„ ํƒ๋˜๋ฉด ๋จ)

์ฒ˜์Œ ์ฝ”๋“œ

  • ์ด๋ถ€๋ถ„์— ๋Œ€ํ•ด ture, false ๋กœ ๊ด€๋ฆฌํ•˜๋ ค๊ณ  ํ–ˆ์—ˆ๋‹ค.
const [sortCheck, setSortCheck] = useState([true, false, false]);
setSortCheck(sortCheck.map((_, i) => (i === id ? true : false)));
className={`sortBtn ${sortCheck[i] ? 'checked' : ''}`}

๋ณ€๊ฒฝ๋œ ์ฝ”๋“œ

  • ์ƒ๊ฐํ•ด ๋ณด๋‹ˆ ์–ธ์ œ๋‚˜ ๊ฐ’์ด 1๊ฐœ๋งŒ ์กด์žฌํ•œ๋‹ค.
  • ๊ทธ๋ ‡๋‹ค๋ฉด ๊ทธ ๊ฐ’๋งŒ ์ €์žฅํ•˜๋ฉด ๋˜๊ณ  ๊ทธ ๊ฐ’๊ณผ ๊ฐ™์œผ๋ฉด / ์•„๋‹ˆ๋ฉด ์ด๋ผ๋Š” ๋กœ์ง์ด๋ฉด ๋œ๋‹ค๊ณ  ์ƒ๊ฐ๋˜์–ด
  • ๋ฆฌํŒฉํ† ๋ง ํ–ˆ๋‹ค.
  • ๋” ๊ฐ„๋‹จํ•˜๊ณ  ๋ณด๊ธฐ ์ข‹์€ ์ฝ”๋“œ๊ฐ€ ๋˜์—ˆ๋‹ค!!!!
const [sortCheck, setSortCheck] = useState(0); 
setSortCheck(id);
className={`sortBtn ${sortCheck === i ? 'checked' : ''}`}

์˜ค๋Š˜์˜ ์„ฑ์žฅ

  • ๋ฐฑ์—”๋“œ์™€ ๋งŒ๋‚˜๋Š” fetch ๋ฅผ ์œ„ํ•ด ์–ด๋–ค ๋ถ€๋ถ„์„ ๊ณ ๋ คํ•ด์•ผ ํ•˜๋Š”์ง€ ์˜ค๋Š˜ ๋งŽ์ด ๋ฐฐ์šฐ๊ฒŒ ๋˜์—ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”์„ ๋ณด๊ณ  ๋Œ€๋žต ๋ฐฑ์—”๋“œ์—์„œ ํ•„์š”ํ•  ๋ถ€๋ถ„์„ ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค
  • ํ”„๋ก ํŠธ์—์„œ url์„ ๋ฐ”๊พธ์–ด ์ฃผ๋Š” ๊ฒƒ์€ ํ”„๋ก ํŠธ๋ผ๋ฆฌ ์†Œํ†ตํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋จ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค.
  • ์ด๋ ‡๊ฒŒ ์•Œ๋ ค์ฃผ์ง€ ์•Š์œผ๋ฉด ํŽ˜์ด์ง€๊ฐ€ ๋ฐ”๋€Œ๋ฉด ๋’ค ํŽ˜์ด์ง€๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ํ”„๋ก ํŠธ๋Š” ์•ž์—์„œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ฌ๋Š”์ง€ ์•Œ์ง€ ๋ชปํ•œ๋‹ค.
  • ์•ž ํŽ˜์ด์ง€์˜ ํ”„๋ก ํŠธ๊ฐ€ ๋’ค ํŽ˜์ด์ง€ ํ”„๋ก ํŠธ์—์„œ ํ•  fetch๋ฅผ ๊ณ ๋ คํ•œ path ๋ฅผ ๋ณด๋‚ด์ค˜์•ผ ํ•œ๋‹ค.
  • url์ด ๋ฐฑ์—”๋“œ์™€์˜ ์†Œํ†ต์„ ์œ„ํ•ด์„œ๋งŒ ๋ฐ”๊ฟ”์ฃผ๋Š”์ง€ ์•Œ์•˜๋Š”๋ฐ ์•žํŽ˜์ด์ง€, ๋’คํŽ˜์ด์ง€ ํ”„๋ก ํŠธ , ๋ฐฑ์—”๋“œ- 3 ๋ถ€๋ถ„์„ ๋ชจ๋‘๊ฐ€ ๊ณ ๋ คํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„์ด์˜€๋‹ค. ์‚ฌ์‹ค fetch๊ฐ€ ์ผ์–ด๋‚˜๋Š” ํŽ˜์ด์ง€์—์„œ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” url์€ ์ด์ „ ํŽ˜์ด์ง€์—์„œ ์ค€ url ์ด๋‹ค.
profile
Frontend Developer, who has business in mind.
post-custom-banner

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