Sally-Day
BlogAbout

ํ”„๋ก ํŠธ์—”๋“œ ํŒ€ํ”„๋กœ์ ํŠธ ํšŒ๊ณ 

2023.01.22

๋ฐ๋ธŒ์ฝ”์Šค
React

๐Ÿ‘€ย ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๋ฉฐ

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


๐Ÿ“ƒย ๊ธฐํš

ํ‰์†Œ์— ํ•˜๋˜ ํŒ€ ์Šคํฌ๋Ÿผ ์‹œ๊ฐ„์— ๋ฏธ๋ฆฌ ๊ธฐํš์— ๋Œ€ํ•œ ์–˜๊ธฐ๋ฅผ ๋‚˜๋ˆˆ ์ ์ด ์žˆ๋‹ค. ์ด ๋•Œ, ๊ณตํ†ต์œผ๋กœ ๋‚˜์˜จ ํ‚ค์›Œ๋“œ๊ฐ€ ์Šคํ„ฐ๋””์˜€๋‹ค. ์šฐ๋ฆฌํŒ€์€ ์ด ํ‚ค์›Œ๋“œ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๋ธŒ๋ ˆ์ธ์Šคํ† ๋ฐ์„ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

์ฃผ์ œ ์„ ์ • ํšŒ์˜

ํ”ผ๊ทธ์žผ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฃผ์ œ์— ๋Œ€ํ•œ ๊ฐ์ž์˜ ์˜๊ฒฌ์„ ๋‚จ๊ธฐ๊ณ  ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํšŒ์˜๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค. ์ด๋ฒˆ์— ์ฒ˜์Œ์œผ๋กœ ํ”ผ๊ทธ์žผ์„ ์‚ฌ์šฉํ•ด๋ณด์•˜๋Š”๋ฐ, ์‹ค์‹œ๊ฐ„์œผ๋กœ ์˜๊ฒฌ์„ ๋‚˜๋ˆ„๋Š”๋ฐ ์žˆ์–ด ํšจ์œจ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

์šฐ๋ฆฌ์—๊ฒŒ ์ฃผ์–ด์ง„ API๋Š” ์†Œ์…œ ๋„คํŠธ์›Œํฌ ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„๊ณผ ๊ด€๋ จ๋˜์–ด ์žˆ์–ด, ์ฃผ์ œ ์„ ์ •์‹œ ์•ฝ๊ฐ„์˜ ์ œ์•ฝ์ด ์žˆ์—ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์„ ์ตœ๋Œ€ํ•œ ๊ณ ๋ คํ•ด์„œ ์ฃผ์ œ๋ฅผ ์„ ์ •ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ์ฃผ์ œ

๋ฐ๋ธŒ์ฝ”์Šค์—์„œ์˜ ํฐ ์ฃผ์ œ๊ฐ€ React ํ˜น์€ Vue.js๋ฅผ ์ด์šฉํ•˜์—ฌ ์†Œ์…œ ๋„คํŠธ์›Œํฌ ์„œ๋น„์Šค์˜€๊ณ , ์šฐ๋ฆฌ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์ฃผ์ œ๋ฅผ ์„ ์ •ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์„ ํ†ตํ•œ ํ•™์Šต์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์ „์šฉ SNS, DigDigDeep (๋””๊ทธ๋””๊ทธ๋”ฅ) ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์„ ํ†ตํ•œ ํ•™์Šต์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์ „์šฉ SNS, DigDigDeep (๋””๊ทธ๋””๊ทธ๋”ฅ)

์„œ๋น„์Šค ์ปจ์…‰

์šฐ๋ฆฌ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์„œ๋น„์Šค ์ปจ์…‰์„ ์ ์šฉ์‹œ์ผœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.


๐ŸŽจย ๋””์ž์ธ

์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ ๋‚ด๊ฐ€ ํ•œ ์—ญํ•  ์ค‘ ๊ฐ€์žฅ ๋น„์ค‘์ด ํฐ ํŒŒํŠธ์ด๋‹ค. ๋›ฐ์–ด๋‚˜์ง„ ์•Š์ง€๋งŒ ๊ทธ๋™์•ˆ์˜ ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ ๋””์ž์ธ์„ ์ž˜ ํ•  ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ? ๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚ด๊ฐ€ ๋””์ž์ธ์„ ๋งก๊ฒ ๋‹ค๊ณ  ์„ ์–ธ(?)ํ•˜๊ณ  ํ”ผ๊ทธ๋งˆ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค ๋กœ๊ณ ์™€ ํ”„๋กœํ† ํƒ€์ž…์„ ๊ตฌํ˜„ํ–ˆ๋‹ค.

๋กœ๊ณ 

๋•…์„ ํŒŒ๋ฉด ํŒ” ์ˆ˜๋ก ๊นŠ์–ด์ง€๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์‚ฌ์šฉ์ž๋“ค์ด ์„œ๋น„์Šค ๋‚ด์—์„œ ์ง€์‹์„ ๋‚˜๋ˆ„๋ฉด ๋‚˜๋ˆŒ์ˆ˜๋ก ๊นŠ์ด ์žˆ๋Š” ํ•™์Šต์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์˜๋ฏธ๋ฅผ ๋‹ด์•˜๋‹ค. ์‹ฌ๋ณผ์€ ํ•™์Šตํ•˜๋Š” ๋‘๋”์ง€์ด๋ฉฐ, ๋ฉ”์ธ ์ปฌ๋Ÿฌ๋Š” ๋ธŒ๋ผ์šด ๊ณ„์—ด์„ ์‚ฌ์šฉํ–ˆ๋‹ค.

ํ”„๋กœํ† ํƒ€์ž…

ํšŒ์˜๋ฅผ ํ•˜๋ฉฐ ๋งŒ๋“  ์™€์ด์–ดํ”„๋ ˆ์ž„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ชจ๋ฐ”์ผ ๋””์ž์ธ์„ ๋จผ์ € ์‹œ์ž‘ํ–ˆ๋‹ค. ๋””์ž์ธ์„ ํ•  ๋•Œ ๋ชจ๋ฐ”์ผ์„ ๋จผ์ € ํ•˜๊ณ  ์›น์„ ํ•˜๋Š” ๊ฒƒ์ด ๋” ํŽธํ•˜๋‹ค๊ณ  ํ•œ๋‹ค. ๋ชจ๋ฐ”์ผ์ด ๋” ํ™”๋ฉด์ด ์ž‘๊ธฐ ๋•Œ๋ฌธ์— ๋ ˆ์ด์•„์›ƒ ์žก๋Š” ๊ฒƒ์ด ๊นŒ๋‹ค๋กญ๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์ผ๋‹จ ๋ชจ๋ฐ”์ผ ๊ธฐ์ค€์œผ๋กœ ๋””์ž์ธ์„ ์™„์„ฑํ–ˆ๋‹ค. ํ‡ด๊ทผํ•˜๊ณ  3์ผ์€ ๋””์ž์ธ๋งŒ ํ•œ ๊ฒƒ ๊ฐ™๋‹ค โ€ฆ ๐Ÿ˜ณย ย (์ด ๋•Œ ๋„ˆ๋ฌด ๊ฐœ๋ฐœํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค. ใ…‹ใ…‹) ์ดํ›„ ์›น ๋ฒ„์ „์€ ๋กœ๊ทธ์ธ/ํšŒ์›๊ฐ€์ž… ๋ถ€๋ถ„์„ ์ œ์™ธํ•˜๊ณ ๋Š” ๋ชจ๋ฐ”์ผ ๋ฒ„์ „์„ ๊ฑฐ์˜ ์œ ์ง€ํ•˜๋Š” ๋ ˆ์ด์•„์›ƒ์œผ๋กœ ์ง„ํ–‰ํ–ˆ๋‹ค. ๋””์ž์ธ์— ๋งŽ์€ ์—ด์ •์„ ์Ÿ๊ธฐ์—๋Š” ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ๋ถ€์กฑํ–ˆ๋‹ค โ€ฆ.


๐Ÿ’ปย ๊ฐœ๋ฐœ

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

๊ธฐ์ˆ  ์Šคํƒ

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ฐ˜ ๋ฆฌ์•กํŠธ์™€ styled-components๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค. ๋‚˜๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ๋ฆฌ์•กํŠธ๋‚˜ styled-components๋Š” ์‚ฌ์šฉํ•ด ๋ณธ ๊ฒฝํ—˜์ด ์žˆ๋Š” ๋ฐ˜๋ฉด, ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ์—†์—ˆ๋‹ค. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊นŠ๊ฒŒ ๊ณต๋ถ€ํ•ด๋ณด์ง€ ์•Š์•„์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์— ๋‘๋ ค์›€์ด ์žˆ์—ˆ๋‹ค.. ๋ฉ˜ํ† ๋‹˜์™€ ์ปคํ”ผ์ฑ—์—์„œ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๋„์ž…์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์„ ๋‚˜๋ˆด๋Š”๋ฐ, ๋ฉ˜ํ† ๋‹˜๊ป˜์„œ ์ฒ˜์Œ ๋„์ž…ํ•ด๋ณด๋Š” ๊ฒƒ์ด๋‹ˆ๊นŒ ํƒ€์ž…์„ ์ง€์ •ํ•ด๋ณด๋Š” ๊ฒƒ ๋งŒ์œผ๋กœ๋„ ์˜๋ฏธ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•ด์ฃผ์…จ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ์ผ๋‹จ ํƒ€์ž…์„ ์ง€์ •ํ•ด๋ณด๋Š” ์ˆ˜์ค€์œผ๋กœ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

๊ธฐ๋Šฅ ๊ตฌํ˜„

  1. ์•Œ๋ฆผ ๊ธฐ๋Šฅ

    ์•Œ๋ฆผ ์ข…๋ฅ˜๊ฐ€ ์ด 3๊ฐ€์ง€ (์ข‹์•„์š”, ๋Œ“๊ธ€, ํŒ”๋กœ์šฐ)์ด์—ˆ๋‹ค. GETํ•ด์˜จ ์•Œ๋ฆผ๋“ค์„ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ๋ณด์—ฌ์ฃผ์—ˆ๋‹ค.

    • ์ข‹์•„์š”: ์‚ฌ์šฉ์ž๋‹˜์ด ๋‚ด ๊ทธ๋ผ์šด๋“œ๋ฅผ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค.
    • ๋Œ“๊ธ€: ์‚ฌ์šฉ์ž๋‹˜์ด ๋‚ด ๊ทธ๋ผ์šด๋“œ๋ฅผ ๋””๊น…ํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ํŒ”๋กœ์šฐ: ์‚ฌ์šฉ์ž๋‹˜์ด ๋‚˜๋ฅผ ํŒ”๋กœ์šฐํ–ˆ์Šต๋‹ˆ๋‹ค.

    ์—ฌ๊ธฐ๊นŒ์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ๋Š”๋ฐ, ๋‚ด๊ฐ€ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์€ ๋ถ€๋ถ„๋“ค์ด ์žˆ์—ˆ๋‹ค. ์•ž์œผ๋กœ๋Š” ์ด๋Ÿฐ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•ด ๋” ๊ผผ๊ผผํžˆ ์ฒ˜๋ฆฌ ํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

    • ์ž๊ธฐ ์ž์‹ ์—๊ฒŒ ์•Œ๋ฆผ์„ ๋ณด๋‚ด๋Š” ๊ฒฝ์šฐ
      • filter๋กœ ํ˜„์žฌ ๋กœ๊ทธ์ธ ๋˜์–ด ์žˆ๋Š” ์œ ์ €์™€ ์•Œ๋ฆผ์„ ๋ณด๋‚ธ ์œ ์ €๊ฐ€ ๊ฐ™์ง€ ์•Š์„ ๋•Œ๋งŒ ๋ณด์—ฌ์ฃผ๋„๋ก ์ฒ˜๋ฆฌํ–ˆ๋‹ค.
    • ์•Œ๋ฆผ์ด ํ•˜๋‚˜๋„ ์—†๋Š” ๊ฒฝ์šฐ
      • notifications.length๊ฐ€ 0์ธ ๊ฒฝ์šฐ๋กœ ๋ฐ›์•„ ์ฒ˜๋ฆฌํ•ด์ฃผ์—ˆ๋‹ค.
    return (
      <List>
        {notifications.length === 0 ? (
          <Text>์•„๋ฌด ์•Œ๋ฆผ๋„ ์˜ค์ง€ ์•Š์•˜์–ด์š” ... ๐Ÿฆ”</Text>
        ) : (
          notifications
            .filter(notification => notification.author._id !== user._id)
            .map(notification => (
              <Notification key={notification._id} {...notification} />
            ))
        )}
      </List>
    );

    ์•Œ๋ฆผ ์ฝ์Œ ๊ธฐ๋Šฅ ์ฒ˜๋ฆฌ๊ฐ€ ์ œ์ผ ์–ด๋ ค์› ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ํŒ€์›๋“ค์—๊ฒŒ ๋ชจ๋ฅด๋Š” ๋ถ€๋ถ„์„ ๋„์›€ ๋ฐ›์•„ ์•„๋ž˜์™€ ๊ฐ™์ด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

    boolean ๊ฐ’์ธ isSeen์œผ๋กœ ์•Œ๋ฆผ์„ ์ฝ์Œ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋Š”๋ฐ, API๊ฐ€ ์•Œ๋ฆผ์„ ์ฝ์—ˆ๋‹ค๋ฉด ๋ชจ๋“  ์•Œ๋ฆผ์˜ isSeen ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ useEffect๋กœ ์ฒ˜์Œ์— ํ™”๋ฉด์ด ๋กœ๋”ฉ๋˜๊ณ  isSeen์ด ํ•˜๋‚˜๋ผ๋„ false๋ฉด ์•Œ๋ฆผ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•„์ด์ฝ˜์œผ๋กœ ํ‘œ์‹œํ•ด์ฃผ์—ˆ๋‹ค.


  2. ์ƒˆ ํฌ์ŠคํŠธ ์ƒ์„ฑ ๊ธฐ๋Šฅ

    ํฌ์ŠคํŠธ ๋ฐ์ดํ„ฐ๊ฐ€ ์ œ๋ชฉ๊ณผ ๋ฐ”๋””๊ฐ€ ๊ตฌ๋ถ„๋˜์ง€ ์•Š์•„์„œ ๊ฐ์ฒด ํ˜•ํƒœ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ๋„˜๊ฒจ์ฃผ์—ˆ๋‹ค.

    title: { // API ๋ฐ์ดํ„ฐ
    	title: '์ œ๋ชฉ',
    	body: '๋ฐ”๋””',
    }

    input์— ์ž…๋ ฅํ•˜๋Š” ๊ฐ’์„ ์„œ๋ฒ„์— ๋„˜๊ฒจ์ฃผ์–ด์•ผํ–ˆ๋Š”๋ฐ, ํ—ค๋” ์ปดํฌ๋„ŒํŠธ์™€ ์—๋””ํ„ฐ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์–ด์„œ e.target.value๋ฅผ ์–ด๋–ป๊ฒŒ ๋„˜๊ฒจ์ค˜์•ผํ• ์ง€ ์–ด๋ ค์› ๋‹ค โ€ฆ ์ด ๊ณผ์ •์—์„œ ์ปค์Šคํ…€ ํ›…์„ ๋งŒ๋“ค์–ด์„œ ์ƒํƒœ๊ฐ’๊ณผ ์ด๋ฒคํŠธํ•ธ๋“ค๋ง ํ•จ์ˆ˜๋ฅผ ์›ํ•˜๋Š” ๊ณณ์—์„œ ๋ถˆ๋Ÿฌ์„œ ์‚ฌ์šฉํ–ˆ๋‹ค. ์ปค์Šคํ…€ ํ›…์€ ์ปดํฌ๋„ŒํŠธ ํŠธ๋ฆฌ๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋˜์–ด ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๊ฐ ์ปดํฌ๋„ŒํŠธ์—์„œ ๋…๋ฆฝ์ ์œผ๋กœ ์ƒํƒœ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

    ์ฆ‰, ์—๋””ํ„ฐ ์ปดํฌ๋„ŒํŠธ์—์„œ๋Š” ์ƒํƒœ๋ฅผ setํ•ด์ฃผ๊ณ , ํ—ค๋” ์ปดํฌ๋„ŒํŠธ์—์„œ๋Š” ์ปค์Šคํ…€ ํ›…์œผ๋กœ๋ถ€ํ„ฐ ์ƒํƒœ๋ฅผ ๋ฐ›์•„์™€์„œ ์„œ๋ฒ„๋กœ ๋„˜๊ฒจ์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค !!!

    ์ด๋ฏธ์ง€ ์ฒจ๋ถ€ ๊ธฐ๋Šฅ๋„ ์ฒ˜์Œ ๊ตฌํ˜„ํ•ด๋ด์„œ ์ ‘๊ทผ ๋ฐฉ์‹์ด ๋– ์˜ค๋ฅด์ง€ ์•Š์•˜๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ํŒ€์› ์ค‘์— ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ ์ˆ˜์ • ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ ํŒ€์›์ด ์žˆ์–ด์„œ ๋„์›€์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

    ์ด๋ฏธ์ง€๋Š” Blob์ด๋ผ๋Š” ํƒ€์ž…์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ํ•ด๋‹น ํƒ€์ž…์„ src ์†์„ฑ์— ์–ด๋–ป๊ฒŒ ๋„˜๊ฒจ์ค„๊นŒ ์— ๋Œ€ํ•œ ์–ด๋ ค์›€์ด ์žˆ์—ˆ๋Š”๋ฐ, URL.createObjectURL(object)๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

    createObjectURL์„ ํ™œ์šฉํ•˜๋ฉด Blob ๊ฐ์ฒด์˜ URL ์ฃผ์†Œ๊ฐ’์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋ถˆ๋Ÿฌ ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ํ•ด๋‹น ์ฃผ์†Œ๋Š” ์‹ค์ œ ์„œ๋ฒ„์—๋Š” ์กด์žฌํ•˜์ง€ ์•Š๊ณ , ๋ธŒ๋ผ์šฐ์ € ๋‚ด์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ URL์ด๋‹ค.

    ์ด๋Ÿฐ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ๋‹ค.


  3. ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ํฌ์ŠคํŠธ ์ˆ˜์ • ๊ธฐ๋Šฅ

    useEffect์—์„œ ํ•ด๋‹น ํฌ์ŠคํŠธ ์ •๋ณด๋ฅผ ๋ถˆ๋Ÿฌ์™€ ๊ฐ title, body, image ์ƒํƒœ์— setํ•ด์ฃผ์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํŽธ์ง‘ํ•œ ๋‚ด์šฉ์„ ๋‹ค์‹œ PUTํ•ด์ฃผ๋Š” ํ˜•์‹์œผ๋กœ ๊ตฌํ˜„ํ–ˆ๋‹ค.


๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘งย ํ˜‘์—…

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

๊ทธ๋ฆฌ๊ณ  git๊ณผ github๋ฅผ ํ™œ์šฉํ•ด์„œ ํ˜‘์—…์ด ์ž˜ ์ด๋ฃจ์–ด์ง„ ๊ฒƒ ๊ฐ™๋‹ค. ๊ฐ€๋” ๋ธŒ๋žœ์น˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธด ํ–ˆ์ง€๋งŒ, ๊ทธ ๋•Œ๋งˆ๋‹ค ์ฒœ์ฒœํžˆ git log๋ฅผ ๋ณด๊ณ  ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ์•„ ๋ธŒ๋žœ์น˜๊ฐ€ ๊ผฌ์ด์ง€ ์•Š๋„๋ก ์ฒ˜๋ฆฌํ–ˆ๋‹ค.

์งง์€ ์‹œ๊ฐ„์ž„์—๋„ ํŒ€์› ๋ชจ๋‘๊ฐ€ ๊ฐ์ž ์ž์‹ ์˜ ์—ญํ• ์— ์ตœ์„ ์„ ๋‹คํ•ด์ค˜์„œ ๋„ˆ๋ฌด ์ข‹์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ ๊ฒƒ ๊ฐ™๋‹ค!!!


๐Ÿ˜ฝย ํ”„๋กœ์ ํŠธ๋ฅผ ๋งˆ์น˜๋ฉฐ

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ํƒ€์ž…์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ๋„ ์ฒ˜์Œ์—๋Š” ์–ด๋ ค์› ๋Š”๋ฐ, ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌํ˜„ํ•ด๋ณด๋ฉด์„œ ์กฐ๊ธˆ์”ฉ ์ต์ˆ™ํ•ด์ง„ ๊ฒƒ ๊ฐ™๋‹ค! ์ปค์Šคํ…€ ํ›…๋„ ์ฒ˜์Œ ๋งŒ๋“ค์–ด๋ณด๊ณ , API ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ๋„ ์ „๋ณด๋‹ค ๋Šฅ์ˆ™ํ•ด ์ง„ ๊ฒƒ ๊ฐ™๋‹ค.

์ค‘๊ฐ„ ๋ฐœํ‘œ์™€ ์ตœ์ข… ๋ฐœํ‘œ์—๋„ ์ฐธ์—ฌํ•˜๋ฉฐ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋Š” ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์ดํ•ด๋„๋ฅผ ๋” ๋†’์ผ ์ˆ˜ ์žˆ์—ˆ๊ณ  ์ „๋‹ฌ๋ ฅ๋„ ํ‚ค์šธ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฐ๋ธŒ์ฝ”์Šค์— ์™€์„œ ํŒ€์žฅ์„ ์—ฐ์†์œผ๋กœ ํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ํŒ€์žฅ์œผ๋กœ์„œ ๋…ธ๋ ฅํ•œ ์ ์ด ์žˆ๋‹ค๋ฉด ์ตœ๋Œ€ํ•œ ๋ชจ๋‘์˜ ์˜๊ฒฌ์„ ๋“ฃ๊ณ  ๋งž์ถฐ๋‚˜๊ฐ€๋Š” ๊ณผ์ •์—์„œ ๋งˆ์Œ ์ƒํ•˜๋Š” ์ผ์ด ์—†๋„๋ก ๋…ธ๋ ฅํ•œ ๊ฒƒ ๊ฐ™๋‹ค ๐Ÿ™‚ย ๋ถ€์กฑํ•˜์ง€๋งŒ ๋” ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ธฐํšŒ์˜€๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

์œ ๋ฆฌํŒ€ ๊ฐ์ž ์ž˜ํ•˜๋Š” ๋ถ€๋ถ„์ด ๋‹ฌ๋ผ์„œ ํ•ฉ์ด ๋„ˆ๋ฌด ์ข‹์•˜๋˜ ๊ฒƒ ๊ฐ™์•„์š” !!! ์ตœ๊ณ  .. ๋‹ค๋“ค ๊ณ ์ƒํ•˜์…จ์Šต๋‹ˆ๋‹ค ๐Ÿฅฐ


๊ฒฐ๊ณผ


Copyright โ“’ 2023 Dayeon Won All rights reserved.
Powered By gatsby-tech-blog