2/13

๐Ÿ“ ํ•  ์ผ

๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ : ๋งˆํฌ์—…

๋…ธ๋งˆ๋“œ ์ฝ”๋” ๋ฆฌ์•กํŠธ ๋งˆ์Šคํ„ฐ state management ๋งˆ๋ฌด๋ฆฌ

 

โœ… ํ•œ ์ผ

๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ : ๋งˆํฌ์—…

ํ”ผ๊ทธ๋งˆ ๋””์ž์ธ์ด ๋งˆ๋ฌด๋ฆฌ๊ฐ€ ๋˜์–ด์„œ ๋งˆํฌ์—…์„ ์‹œ์ž‘ํ–ˆ๋‹ค

๋ฐฑ์—”๋“œ ์ชฝ์—์„œ jwt ๊ตฌํ˜„์ด ์•„์ง ์–ด๋ ต๋‹ค๊ณ  ํ•ด์„œ ์ผ๋‹จ ์ฒœ์ฒœํžˆ ์ฃผ์š” ๊ธฐ๋Šฅ ๊ตฌํ˜„์„ ํ•˜๊ธฐ ์ „์— ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ฒœ์ฒœํžˆ ๊ตฌํ˜„ํ•ด๋†“๊ธฐ๋กœ ํ–ˆ๋‹ค

๊ทธ๋ž˜์„œ ์•„๋งˆ ์ด๋ฒˆ์ฃผ ์ฃผ๋ง๊นŒ์ง€๋Š” ๋งˆํฌ์—…์„ ํ•˜์ง€ ์•Š์„๊นŒ ์‹ถ๋‹ค

 

 

๋…ธ๋งˆ๋“œ ์ฝ”๋” ๋ฆฌ์•กํŠธ ๋งˆ์Šคํ„ฐ state management ๋งˆ๋ฌด๋ฆฌ

๋“œ๋””์–ด state management ํŒŒํŠธ๋ฅผ ๋งˆ๋ฌด๋ฆฌํ–ˆ๋‹ค

๋„ˆ๋ฌด ํ™€๊ฐ€๋ถ„ํ•˜๋‹ค

https://github.com/Hyeeeein/Nomad_React_recoil-todo-app/commit/a6b3a7324bb4b91f903344e9072a9ccbfff4bb1b

 

230212 Add Time Converter · Hyeeeein/Nomad_React_recoil-todo-app@a6b3a73

Show file tree Showing 7 changed files with 61 additions and 7 deletions.

github.com

 

 

2/14

๐Ÿ“ ํ•  ์ผ

๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ : ๋งˆํฌ์—…

 

โœ… ํ•œ ์ผ

๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ : ๋งˆํฌ์—…

์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” tailwind ๋ฅผ ์“ฐ๊ธฐ๋กœ ํ–ˆ๋Š”๋ฐ ํ™•์‹คํžˆ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์“ฐ๋‹ค๋ณด๋‹ˆ ๋‹จ์ ์ด ๋ณด์ด๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค

์ด๋ฒˆ์— ๋‚ด๊ฐ€ ๊ตฌํ˜„ํ•˜๊ธฐ๋กœ ํ•œ ๊ธฐ๋Šฅ์€ ๋กœ๊ทธ์ธ/ํšŒ์›๊ฐ€์ž…์ธ๋ฐ input ๋“ค์˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ react-hook-form ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด ๊ตฌํ˜„ํ•˜๊ธฐ๋กœ ์ •ํ–ˆ๋‹ค

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์•„์ง ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜๋Š”๋ฐ ๋ฌธ์ œ๊ฐ€ ๋œ ๊ฑด tailwind ์—์„œ checkbox, radio ํƒ€์ž…์˜ ์Šคํƒ€์ผ์ด์—ˆ๋‹ค

๋ณดํ†ต checkbox, radio ๋Š” ์Šคํƒ€์ผ๋ง์„ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ๋‹ค๋ฅธ ์Šคํƒ€์ผ์„ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ display: none ์„ ์ฒ˜๋ฆฌํ•˜์—ฌ span ์œผ๋กœ ๊ตฌํ˜„ํ•œ๋‹ค

๊ทธ๋Ÿฐ๋ฐ tailwind ๋Š” ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ง€์ •ํ•ด์ค€ ํด๋ž˜์Šค์ด๋ฆ„์œผ๋กœ className ์— ์ž‘์„ฑํ•˜์—ฌ ์Šคํƒ€์ผ๋ง์„ ํ•˜๋‹ค๋ณด๋‹ˆ ๊ด€๊ณ„์—ฐ์‚ฐ์ž๋กœ ์œ„์˜ ๋ฐฉ์‹๋Œ€๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ๊ฐ€ ํž˜๋“ค๋‹ค

๊ทธ๋ž˜์„œ tailwind ์—๋„ peer ๋ผ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๋Š”๋ฐ ํด๋ž˜์Šค์ด๋ฆ„์œผ๋กœ input ์— 'peer/์ด๋ฆ„' ์„ ์ง€์ •ํ•ด๋†“๊ณ  peer ๋ฅผ ์ง€์ •ํ•ด์ค€ input ์— checked ๋  ๋•Œ๋ฅผ ์Šคํƒ€์ผ์„ ์ง€์ •ํ•ด์ค„ span ์— ํด๋ž˜์Šค์ด๋ฆ„์œผ๋กœ 'peer-checked/์ด๋ฆ„: ์Šคํƒ€์ผํด๋ž˜์Šค์ด๋ฆ„' ์ด๋ ‡๊ฒŒ ์ง€์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค๊ณ  ํ•œ๋‹ค

๊ทธ๋Ÿฐ๋ฐ ํ•ด๋‹น ๊ธฐ๋Šฅ๋ง๊ณ  ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์ด ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ input ๊ณผ ํ˜•์ œ ์š”์†Œ๋กœ ์žˆ๋Š” span ์ด ์•„๋‹ˆ๋ฉด ์ ์šฉ์ด ์•ˆ ๋œ๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค

๋‚˜๋Š” ์ด๋ฏธ์ง€ ํŒŒ์ผ๋กœ ํ•˜์ง€ ์•Š๊ณ  css ๋กœ ๊ทธ๋ ค์„œ checked ๋œ ์ƒํƒœ์™€ ์•ˆ ๋œ ์ƒํƒœ๋ฅผ ์ฒ˜๋ฆฌํ•ด์ฃผ๊ณ  ์‹ถ์—ˆ๋‹ค

์‚ฌ์‹ค ์ด๋ฏธ์ง€ ํŒŒ์ผ๋กœ ํ–ˆ๋‹ค๋ฉด ๊ทธ๋ƒฅ input ์„ display: none ์ฒ˜๋ฆฌํ•ด์ฃผ๊ณ  span ์— checked ๋œ ์ƒํƒœ์™€ ์•ˆ ๋œ ์ƒํƒœ๋ฅผ ์ฒ˜๋ฆฌํ•ด์คฌ์œผ๋ฉด ๋์ง€๋งŒ ๋‚˜๋Š” css ๋กœ ๊ทธ๋ ค์„œ ํ•˜๋ ค๊ณ  ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ ์šฉํ•˜์ง€ ๋ชปํ–ˆ๋‹ค

์ด ๋ฌธ์ œ๋กœ ๊ณ„์† ๊ณจ๋จธ๋ฆฌ๋ฅผ ์•“๋‹ค๊ฐ€ ๊ฒฐ๊ตญ span ์œผ๋กœ ํ•˜์ง€ ์•Š๊ณ  ๊ฐ€์ƒ์„ ํƒ์ž์ธ after ๋ฅผ ํ™œ์šฉํ•˜์—ฌ check ๋  ๋•Œ๋ฅผ ์„ค์ •ํ•ด์ฃผ์—ˆ๋‹ค

2/15

๐Ÿ“ ํ•  ์ผ

๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ : ๋งˆํฌ์—…

 

โœ… ํ•œ ์ผ

๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ : ๋งˆํฌ์—…

์–ด์ œ๋ถ€๋กœ ๋กœ๊ทธ์ธ/ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€ ๋งˆํฌ์—…์ด ๋๋‚˜์„œ ํšŒ์›๊ฐ€์ž… ํ›„ ํ•ด๋‹น ํšŒ์›์˜ ์ถ”์ฒœ์ƒํ’ˆ์— ๋Œ€ํ•œ ์„ค๋ฌธ์กฐ์‚ฌ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•œ ํŽ˜์ด์ง€๋ฅผ ๋งˆํฌ์—…ํ–ˆ๋‹ค

servey ํŽ˜์ด์ง€๋กœ ํ•˜๋‚˜ ์ •ํ•ด์ฃผ๊ณ  ๊ฐ ์„ค๋ฌธ ์‚ฌํ•ญ์— ๋Œ€ํ•ด framer-motion ์œผ๋กœ ๋‹ค์Œ์œผ๋กœ ๋„˜์–ด๊ฐ€๋ฉด ์Šฌ๋ผ์ด๋“œ ๋˜๋„๋ก ํ•ด์ฃผ๊ณ  ์‹ถ์—ˆ๋‹ค

๊ทธ๋Ÿฐ๋ฐ ์ €๋ฒˆ์— ์ปดํฌ๋„ŒํŠธ ์Šฌ๋ผ์ด๋“œ๋ฅผ ํ–ˆ์„ ๋•Œ ๋‹ค์Œ ๋ฒ„ํŠผ๊ณผ ์ด์ „ ๋ฒ„ํŠผ์„ ๊ฐ๊ฐ ๋ˆŒ๋ €์„ ๋•Œ ์”นํ˜”๋˜ ํ˜„์ƒ์ด ๋‚˜ํƒ€๋‚˜์„œ ๋‹ค๋ฅธ ํŒ€์›์—๊ฒŒ ๋ฌผ์–ด๋ดค๋”๋‹ˆ display ๋กœ ์”นํžˆ๋Š” ํ˜„์ƒ์ด ๋ณด์ด์ง€ ์•Š๊ฒŒ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์คฌ๋‹ค๊ณ  ํ•˜๋Š” ๊ฒƒ์ด๋‹ค

์กฐ๊ธˆ ์–ด์ƒ‰ํ•˜๊ธด ํ•˜์ง€๋งŒ ๊ทธ๋ƒฅ ์ด ์ •๋„์—๋„ ๋งŒ์กฑํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค

์•„๋ฌด๋ž˜๋„ framer-motion ์ด๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ ์‚ฌ๋žŒ์ด ๋งŒ๋“ค์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š” ๊ฑด ์–ด์ฉ” ์ˆ˜ ์—†์–ด์„œ ์ด๋Ÿฐ ์ ์ด ์ฐธ ์•„์‰ฝ๋‹ค

 

2/18

๐Ÿ“ ํ•  ์ผ

๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ : ์„ค๋ฌธ์กฐ์‚ฌ ํŽ˜์ด์ง€์™€ ํšŒ์›๊ฐ€์ž… ์™„๋ฃŒ ํŽ˜์ด์ง€ ๋งˆํฌ์—…, ์„ค๋ฌธ์กฐ์‚ฌ ๊ฒฐ๊ณผ ๋กœ์ง ์ž‘์„ฑ

 

โœ… ํ•œ ์ผ

๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ : ์„ค๋ฌธ์กฐ์‚ฌ ํŽ˜์ด์ง€์™€ ํšŒ์›๊ฐ€์ž… ์™„๋ฃŒ ํŽ˜์ด์ง€ ๋งˆํฌ์—…, ์„ค๋ฌธ์กฐ์‚ฌ ๊ฒฐ๊ณผ ๋กœ์ง ์ž‘์„ฑ

https://github.com/Financial-Instruments-Mini/fe-repo/pull/24

 

feat: Survey page, signup completion page markup and logic part completed by Hyeeeein · Pull Request #24 · Financial-Instrumen

์ž‘์—… ๊ฐœ์š” (์ด์Šˆ ๋ฒˆํ˜ธ) resolve #11 ์ž‘์—… ๋‚ด์šฉ (๋ณ€๊ฒฝ ์‚ฌํ•ญ) ์„ค๋ฌธ์กฐ์‚ฌ ํŽ˜์ด์ง€์—์„œ ์™„๋ฃŒ ํŽ˜์ด์ง€์— ๋„˜๊ฒจ์ค„ ์„ค๋ฌธ์กฐ์‚ฌ ๊ฒฐ๊ณผ ๋กœ์ง ๋Œ€๋ถ€๋ถ„ ์™„๋ฃŒ ์„ค๋ฌธ์กฐ์‚ฌ ํŽ˜์ด์ง€, ํšŒ์›๊ฐ€์ž… ์™„๋ฃŒ ํŽ˜์ด์ง€ ๋งˆํฌ์—… ์™„๋ฃŒ Servey ์ปด

github.com

 

2/19

๐Ÿ“ ํ•  ์ผ

๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ : ์„ค๋ฌธ์กฐ์‚ฌ ํŽ˜์ด์ง€์™€ ํšŒ์›๊ฐ€์ž… ์™„๋ฃŒ ํŽ˜์ด์ง€ ๋งˆํฌ์—…, ์„ค๋ฌธ์กฐ์‚ฌ ๊ฒฐ๊ณผ ๋กœ์ง ์ž‘์„ฑ

 

โœ… ํ•œ ์ผ

๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ : ์„ค๋ฌธ์กฐ์‚ฌ ํŽ˜์ด์ง€์™€ ํšŒ์›๊ฐ€์ž… ์™„๋ฃŒ ํŽ˜์ด์ง€ ๋งˆํฌ์—…, ์„ค๋ฌธ์กฐ์‚ฌ ๊ฒฐ๊ณผ ๋กœ์ง ์ž‘์„ฑ

https://github.com/Financial-Instruments-Mini/fe-repo/pull/24

 

 

2/6

๐Ÿ“ ํ•  ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 19์ผ์ฐจ

 

โœ… ํ•œ ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 19์ผ์ฐจ

์˜ค๋Š˜์˜ ๊ณผ์ œ๋Š” ์ฒดํฌ๋ฐ•์Šค ์ „์ฒด์„ ํƒ ๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜๊ธฐ

 

  1. ์ „์ฒด์„ ํƒ ์ฒดํฌ์‹œ ๋ชจ๋“  ์ž์‹ ์ฒดํฌ๋ฐ•์Šค๊ฐ€ ์ฒดํ‚น๋ฉ๋‹ˆ๋‹ค.
  2. ๋ชจ๋“  ์ž์‹ ์ฒดํฌ๋ฐ•์Šค๊ฐ€ ์ฒดํ‚น์‹œ ์ „์ฒด ์„ ํƒ ๋ฐ•์Šค๊ฐ€ ์ฒดํ‚น๋ฉ๋‹ˆ๋‹ค.
  3. ์ž์‹ ์ฒดํฌ๋ฐ•์Šค๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ์ฒดํ‚น๋˜์ง€ ์•Š์€๊ฒŒ ์žˆ๋‹ค๋ฉด, ์ „์ฒด ์ฒดํฌ๋ฐ•์Šค์˜ ์ฒดํฌ๋„ ํ’€๋ฆฝ๋‹ˆ๋‹ค.

์œ„์˜ ์„ธ ๊ฐœ์˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ๊ตฌํ˜„ํ•˜๋ฉด ๋๋‹ค

์ข€ ๋ณต์žกํ•ด์„œ ๊ตฌ๊ธ€๋ง์„ ์ฐธ๊ณ ํ•ด์„œ ๋งŒ๋“ค์—ˆ๋‹ค

 

 

 

 

 

 

 

2/7

๐Ÿ“ ํ•  ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 20์ผ์ฐจ

 

โœ… ํ•œ ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 20์ผ์ฐจ

์˜ค๋Š˜์˜ ๊ณผ์ œ๋Š” `useCustomMutation` ํ›…๊ณผ `useCustomQuery` ํ›…์œผ๋กœ todolist ๊ตฌํ˜„ํ•˜๊ธฐ

 

  1. ํˆฌ๋‘๋ฆฌ์ŠคํŠธ๋ฅผ ๋žœ๋”๋งํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  2. ํˆฌ๋‘๋ฆฌ์ŠคํŠธ์— ์ƒˆ๋กœ์šด todo ๋ฅผ **์ถ”๊ฐ€**ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  3. ํˆฌ๋‘๋ฆฌ์ŠคํŠธ์˜ todo๋ฅผ **์‚ญ์ œ**ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  4. ์ถ”๊ฐ€ ๋˜๋Š” ์‚ญ์ œ๋ฅผ ํ•  ๋•Œ๋งˆ๋‹ค `refetch`๋ฅผ ํ•˜์—ฌ **์ˆ˜์ •์‚ฌํ•ญ์ด ์ž๋™์œผ๋กœ ๋ฐ˜์˜**๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์œ„์˜ ๋„ค๊ฐœ์˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค

useCustomQuery ๋Š” ๋”ฐ๋กœ ์‹ ๊ฒฝ ์“ธ ๊ฒŒ ์—†์–ด์„œ ์–ด๋ ต์ง„ ์•Š์•˜๋Š”๋ฐ useCustomMutation ๋Š” ์ˆ˜์ •, ์‚ญ์ œ, ์ถ”๊ฐ€๋ฅผ ํ•ด์ฃผ๋Š” ํ›…์ด๋ผ์„œ ๋“ค์–ด์˜ฌ input ์„ ๊ด€๋ฆฌํ•ด์คฌ์–ด์•ผ ํ–ˆ๋‹ค

๋‹ค๋ฅธ ํŒ€์›ํ•œํ…Œ ๋ฌผ์–ด๋ด์„œ ํ•ด๊ฒฐํ–ˆ๋Š”๋ฐ ๊ณผ์ œ์˜ ์˜๋„๋Œ€๋กœ ํ’€์ง€ ๋ชปํ•œ ๊ฒƒ ๊ฐ™์•„ ์กฐ๊ธˆ ์ฐ์ฐํ–ˆ๋‹ค

interface IUseCustomMutationReturn {
  addLoading: boolean;
  setAddLoading: Dispatch<SetStateAction<boolean>>;
  mutate: (input: string) => Promise<any>;
}

const useCustomMutation = (
  mutationFn: (input: string) => Promise<any>
): IUseCustomMutationReturn => {
  const [addLoading, setAddLoading] = useState(false);
  const mutate = (input: string) => {
    if (mutationFn === postTodos) {
      setAddLoading(true);
      return postTodos(input);
    } else return deleteTodos(input);
  };
  return { addLoading, setAddLoading, mutate };
};

 

 

 

 

 

 

 

2/8

๐Ÿ“ ํ•  ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 20์ผ์ฐจ - ์ˆ˜์ •

 

โœ… ํ•œ ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 20์ผ์ฐจ - ์ˆ˜์ •

๊ณผ์ œ๋ฅผ ํ™•์ธํ•ด์ฃผ๋Š” ํŒ€์›๋ถ„์ด ์–ด์ œ ํ‘ผ ๊ณผ์ œ์— ๋Œ€ํ•ด ์ฐœ์ฐœํ–ˆ๋˜ ๋ถ€๋ถ„์€ ์•„๋‹ˆ๋‚˜ ๋‹ค๋ฅผ๊นŒ ์ฐ์–ด์ฃผ์…จ๋‹ค

๋‹ค๋ฅธ ํŒ€์›์˜ ๊ณผ์ œ๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ํ•˜๋‹ค๋ณด๋‹ˆ ๊ทธ ๋ถ€๋ถ„๋„ ์ง€์ ์„ ๋ฐ›์•˜๋‹ค

 

const useCustomMutation = (mutationFn: (input: string) => Promise<any>) => {
  const [data, setData] = useState<any>();
  const [isLoading, setIsLoading] = useState(false);

  // then X async await O
  const mutate = async (input: string) => {
    setIsLoading(true);
    const res = await mutationFn(input);
    setData(res);
    setIsLoading(false);
    return res;
  };
  return { data, isLoading, mutate };
};

๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋˜ mutation ๋ถ€๋ถ„์„ ํ•ด๊ฒฐํ•˜๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ ๊ธฐ์กด์˜ isLoading ๋ฅผ ์“ฐ์ง€ ๋ชปํ–ˆ๋˜ ๊ฒƒ์„ true ๋กœ ๋ฐ”๊ฟจ๋‹ค๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด false ๋กœ ๋ฐ”๊ฟ”์„œ ํ•ด๊ฒฐํ–ˆ๊ณ  then ์ด ์•„๋‹Œ async await ๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ ํ•ด๊ฒฐํ•ด์คฌ๋‹ค

 

 

 

 

 

 

 

2/9

๐Ÿ“ ํ•  ์ผ

  • ๊ทธ๋ฃน์Šคํ„ฐ๋”” ์›Œํฌ์ƒต ๋ฐœํ‘œ ์ž๋ฃŒ ์ •๋ฆฌํ•˜๊ธฐ

 

โœ… ํ•œ ์ผ

  • ๊ทธ๋ฃน์Šคํ„ฐ๋”” ์›Œํฌ์ƒต ๋ฐœํ‘œ ์ž๋ฃŒ ์ •๋ฆฌํ•˜๊ธฐ

์˜ค๋Š˜์€ ๊ทธ๋ฃน์Šคํ„ฐ๋”” ์›Œํฌ์ƒต ๋ฐœํ‘œ ์ž๋ฃŒ๋ฅผ ์ •๋ฆฌํ•˜๊ณ  ๋ฏธ๋‹ˆํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค์Œ์ฃผ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ฒŒ ๋˜์–ด์„œ ํšŒ์˜๋ฅผ ํ–ˆ๋‹ค

๋ฏธ๋‹ˆํ”„๋กœ์ ํŠธ๋Š” ํŠน๋ณ„ํ•œ ๊ฑด ์—†๊ณ  ํŒจ์บ ์˜ ๋ฐฑ์—”๋“œ ํŒ€๊ณผ ๊ฐ™์ด ํ˜‘์—…์„ ํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋‹ค

์ฒ˜์Œ์œผ๋กœ ๋ฐฑ์—”๋“œํŒ€๊ณผ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๊ฒŒ ๋˜์–ด์„œ ๋‘๊ทผ๋‘๊ทผ ์„ค๋ œ๋‹ค

๋ฐฑ์—”๋“œํŒ€์€ ์ž๋ฐ” ์Šคํ”„๋ง ์–ธ์–ด๋ฅผ ๋ฐฐ์› ๋‹ค๊ณ  ํ–ˆ๋‹ค

์ž๋ฐ”๋ฅผ ์ž˜์€ ๋ชจ๋ฅด์ง€๋งŒ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ ๊ฐ€๋” ์ •๋‹ต์„ ๋ณด๋А๋ผ ์ฝ”๋“œ๋ฅผ ๋ณธ ์ ์ด ์žˆ์—ˆ๋‹ค

ํ™•์‹คํžˆ js ๋ณด๋‹ค๋Š” ๋‚˜์€ ์–ธ์–ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ๋ฐฑ์—”๋“œ๋‹ˆ๊นŒ ๋ง‰์—ฐํžˆ ์–ด๋ ต๊ฒ ์ง€๋ผ๋Š” ์ƒ๊ฐ์„ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ๋‹ค

์ด๋ฒˆ ๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ์—์„œ ์ œ๋Œ€๋กœ ๋œ ์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•„ ์„ค๋ Œ ๋งˆ์Œ์ด ์ปธ๋‹ค

์–ด์ œ๋Š” ๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ ์•ˆ๋‚ด๋ฅผ ์คŒ์œผ๋กœ ๋“ฃ๊ณ  ํ”„๋ก ํŠธ์—”๋“œ ์‚ฌ๋žŒ๋“ค๊ณผ ํ•จ๊ป˜ ๊ฐ„๋‹จํžˆ ์ดˆ๊ธฐ์„ธํŒ… ํšŒ์˜๋ฅผ ํ–ˆ๋‹ค

์–ด๋–ค css ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์“ฐ๊ณ , ์ฝ”๋“œ ์ž‘์„ฑ ๋ฐฉ์‹์€ ์–ด๋–ป๊ฒŒ ํ•  ๊ฑด์ง€ ๋“ฑ๋“ฑ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •ํ–ˆ๋‹ค

๊ทธ๋ฆฌ๊ณ  ์˜ค๋Š˜์€ ๋ฐฑ์—”๋“œํŒ€๊ณผ์˜ ๋งŒ๋‚จ์„ ์˜คํ”„๋ผ์ธ์œผ๋กœ ๊ฐ€์กŒ๋‹ค

ํ™•์‹คํžˆ ์„œ๋กœ๊ฐ€ ์–ด๋–ป๊ฒŒ ๊ฐœ๋ฐœ์„ ํ•˜๋Š”์ง€ ๋‘๋ฃจ๋ญ‰์ˆ ํ•˜๊ฒŒ ์•Œ๋‹ค๋ณด๋‹ˆ๊นŒ ์กฐ๊ธˆ ์กฐ์‹ฌ์Šค๋Ÿฌ์šด ๋ฉด๋„ ์žˆ๊ณ  ์ง„ํ–‰์ด ์›ํ™œํ•˜์ง€ ์•Š๋Š” ๋ถ€๋ถ„์ด ์žˆ์—ˆ๋‹ค

๊ทธ๋ž˜๋„ ๋ฐฑ์—” ํ”„์—” ๊ฐ ์กฐ์žฅ์ด ์กฐ์œจ์„ ์ž˜ ํ•ด์ฃผ์…”์„œ ๋„ˆ๋ฌด ํŽธํ•˜๊ฒŒ ํšŒ์˜๋ฅผ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค

๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ ์ฃผ์ œ๋Š” ๊ธˆ์œต์ƒํ’ˆ ์‡ผํ•‘๋ชฐ์ด์—ˆ๋Š”๋ฐ ๋Œ€ํ˜• ํ”„๋กœ์ ํŠธ๋„ ์•„๋‹ˆ๋ผ ๋ฐฑ์—”๋“œ๋„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ ํ•œ๊ณ„๊ฐ€ ์žˆ์–ด์„œ ๊ณต๊ณต ์˜คํ”ˆ api ๋ฅผ ํ™œ์šฉํ•˜์—ฌ db ์— ์ €์žฅํ•˜์—ฌ api ๋ฅผ ์ œ์ž‘ํ•ด์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค

๊ทธ๋ฆฌ๊ณ  ํšŒ์› ์ •๋ณด๋Š” db ์— ์ €์žฅํ•˜์—ฌ jwt ๋ฐฉ์‹์œผ๋กœ ํ† ํฐ์„ ๋ณด๋‚ด์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค

 

 

 

 

 

 

 

2/10

๐Ÿ“ ํ•  ์ผ

  • ๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ : ํ”ผ๊ทธ๋งˆ ์ž‘์—…

 

โœ… ํ•œ ์ผ

  • ๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ : ํ”ผ๊ทธ๋งˆ ์ž‘์—…

์–ด์ œ์˜ ํšŒ์˜ ์ดํ›„ ์ฐธ๊ณ ํ•  ๋””์ž์ธ ๋ ˆํผ๋Ÿฐ์Šค๋„ ์ฐพ๊ณ  ์–ด๋–ค ์ฃผ์ œ๋กœ ์ง„ํ–‰ํ• ์ง€, ๋ ˆ์ด์•„์›ƒ์€ ์–ด๋–ป๊ฒŒ ์žก์„์ง€ ์–ด๋А์ •๋„ ๊ฐ€๋‹ฅ์ด ์žกํ˜€์„œ ํ”ผ๊ทธ๋งˆ๋กœ ui ๋””์ž์ธ ์ž‘์—…์„ ํ–ˆ๋‹ค

์˜ค๋žœ๋งŒ์— ํ”ผ๊ทธ๋งˆ๋ฅผ ์“ฐ๋ ค๋‹ˆ ์กฐ๊ธˆ ํ—ค๋งธ์ง€๋งŒ ๊ทธ๋ฆฌ ์–ด๋ ค์šด ๊ธฐ๋Šฅ์€ ์—†์–ด์„œ ์“ฐ๋‹ค๋ณด๋‹ˆ ๋‚˜๋ฆ„ ์ ์‘์„ ํ–ˆ๋‹ค

๋””์ž์ธ ์ž‘์—…์€ ์ฃผ๋ง๊นŒ์ง€ ๋งˆ์น˜๊ธฐ๋กœ ํ–ˆ๋‹ค

 

 

 

 

 

 

 

2/12

๐Ÿ“ ํ•  ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 21์ผ์ฐจ, 22์ผ์ฐจ

 

โœ… ํ•œ ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 21์ผ์ฐจ, 22์ผ์ฐจ

๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋А๋ผ ๋ฐ€๋ฆฐ 21, 22 ์ผ์ฐจ๋ฅผ ํ•œ ๋ฒˆ์— ํ’€์—ˆ๋‹ค

 

 

21์ผ์ฐจ๋Š” react-query๋กœ youtube ๊ฒ€์ƒ‰๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜๊ธฐ์˜€๋‹ค

 

  1. `react-query` ๋ฅผ ์‚ฌ์šฉํ•ด์„œ youtube ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜๊ธฐ
  2. **์ด๋ฏธ ๊ฒ€์ƒ‰ํ–ˆ๋˜ `keyword` ์— ๋Œ€ํ•ด์„œ๋Š”, ์บ์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•ด์„œ ๋žœ๋”๋ง ํ•˜๊ธฐ (๋„คํŠธ์›Œํฌ ์š”์ฒญ ์•„๋ผ๊ธฐ)**
  3. ๋งŒ์•ฝ ๋„คํŠธ์›Œํฌ ์š”์ฒญ **ํ• ๋‹น๋Ÿ‰์„ ์ดˆ๊ณผ**ํ•ด์„œ ์—๋Ÿฌ๊ฐ€ ๋‚˜๋Š” ๊ฒฝ์šฐ ๋ชฉ์—…๋ฐ์ดํ„ฐ๋ฅผ ๋žœ๋”๋งํ•˜๊ธฐ (์˜ˆ์™ธ์ƒํ™ฉ ๋Œ€๋น„ํ•˜๊ธฐ)
  4. ๋นˆ ๋ฌธ์ž์—ด `""` ๋กœ ๊ฒ€์ƒ‰ํ•˜๋ฉด, ๋ชฉ์—…๋ฐ์ดํ„ฐ๋ฅผ ๋žœ๋”๋ง ํ•˜๊ธฐ

์œ„์˜ 4๊ฐœ์˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ณผ์ œ์˜€๋‹ค

 

  const { data, isLoading } = useQuery<ISearchedResult>(
    ["keyword", keyword],
    () => search(keyword)
  );

์œ„์˜ ์ฝ”๋“œ๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ํ•ด์คฌ๋Š”๋ฐ ๋„ˆ๋ฌด ๊ฐ„๋‹จํ•ด์„œ ์ด๊ฒŒ ๋งž๋‚˜ ์‹ถ์„ ์ •๋„์˜€๋‹ค

์•„๋‹ˆ๋‚˜ ๋‹ค๋ฅผ๊นŒ ๊ณผ์ œ๋ฅผ ํ™•์ธํ•ด์ฃผ์‹œ๋Š” ๋ถ„์ด ํ•ด๋‹น ๋ถ€๋ถ„์— ๋Œ€ํ•ด ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์•Œ๋ ค์ฃผ์…จ๋‹ค

์บ์‹ฑ์ด ๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ–ˆ๋‹ค

๋ฐ”๋€Œ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ํ‚ค๊ฐ’์œผ๋กœ ์ง€์ •ํ•ด์ฃผ๋ฉด ํ•ด๋‹น ํ‚ค๊ฐ’์„ ์บ์‹ฑํ•˜๊ณ  ๋™์ผํ•œ ํ‚ค๊ฐ’์ผ ๊ฒฝ์šฐ ์บ์‹ฑ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•œ๋‹ค๊ณ  ์•Œ๊ณ  ์žˆ์—ˆ๋Š”๋ฐ ๋ญ”๊ฐ€ ์ž˜๋ชป ์•Œ๊ณ  ์žˆ์—ˆ๋‚˜๋ณด๋‹ค ์ˆ˜์ •ํ•ด์•ผ๊ฒ ๋‹ค

 

 

 

22์ผ์ฐจ๋Š” Redux toolkit ์„ ์ด์šฉํ•ด์„œ todolist ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค

 

  1. todo list ๊ฐ€ ๋žœ๋”๋ง ๋ผ์•ผํ•ฉ๋‹ˆ๋‹ค.
  2. todo ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด์ฃผ์„ธ์š”
  3. todo ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด์ฃผ์„ธ์š”

์œ„ ์„ธ๊ฐœ์˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋ฉด ๋๋‹ค

 

์ตœ๊ทผ recoil ๋งŒ ์ผ๋‹ค๊ณ  redux ๋Š” ์ฃ„๋‹ค ๊นŒ๋จน์–ด์„œ ๋ฆฌ์•กํŠธ ์ˆ˜์—… ๋•Œ ๋ฐฐ์› ๋˜ redux ์ˆ˜์—… ์ž๋ฃŒ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ๊ตฌํ˜„ํ–ˆ๋‹ค

 

store.ts

interface TodoState {
  todos: string[];
}

const initialState: TodoState = {
  todos: [],
};

export const todoSlice = createSlice({
  name: "todo",
  initialState,
  reducers: {
    createTodo: (state, action: PayloadAction<string>) => {
      state.todos.push(action.payload);
    },
    deleteTodo: (state, action: PayloadAction<number>) => {
      state.todos.splice(action.payload, 1);
    },
  },
});

export const { createTodo, deleteTodo } = todoSlice.actions;

export default configureStore({
  reducer: {
    todo: todoSlice.reducer,
  },
});

 

app.tsx

 const todo = useSelector((state: any) => state.todo.todos);
  const dispatch = useDispatch();
  const [value, setValue] = useState("");

  const onSubmit = (event: FormEvent<HTMLFormElement>) => {
    event.preventDefault();
    if (value !== "") {
      dispatch(createTodo(value));
      setValue("");
    }
  };

  const onChange = (event: ChangeEvent<HTMLInputElement>) => {
    setValue(event.target.value);
  };

  const onBtnClick = (id: number) => {
    dispatch(deleteTodo(id));
  };

  return (
    <>
      <h1>To Do List</h1>
      <form onSubmit={onSubmit}>
        <input value={value} type="text" onChange={onChange} />
        <button type="submit">Add</button>
      </form>
      <ul>
        {todo.map((todo: string, index: number) => (
          <ToDo key={index} onBtnClick={onBtnClick} text={todo} id={index} />
        ))}
      </ul>
    </>
  );

 

 

 

 

 

 

1/30

๐Ÿ“ ํ•  ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 15์ผ์ฐจ

 

โœ… ํ•œ ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 15์ผ์ฐจ

์˜ค๋Š˜์˜ ๊ณผ์ œ๋Š” tailwind : ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ๊ตฌํ˜„ํ•˜๊ธฐ

tailwind ๋Š” ์„ค๋ช…๋งŒ ๋“ค์–ด๋ดค์ง€ ์ฒ˜์Œ ์จ๋ณด๋Š” ๊ฑฐ๋ผ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์€ ์จ๋ณด์ง€๋„ ๋ชปํ•˜๊ณ  ๊ทธ๋ƒฅ ๊ธฐ๋ณธ๊ธฐ๋Šฅ๋งŒ ์ผ๋‹ค

์ฒ˜์Œ ์•Œ์•˜๋Š”๋ฐ tailwind ๋Š” ์ž๋™์œผ๋กœ ๋ธŒ๋ ˆ์ดํฌ ํฌ์ธํŠธ๋ฅผ ์„ค์ •ํ•ด์ค˜์„œ ํ™•์‹คํžˆ ์ž‘์€ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์•„์ฃผ ์œ ์šฉํ•  ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค

ํด๋ž˜์Šค๋„ค์ž„๋„ ๋”ฐ๋กœ ์ง€์ •ํ•ด์ฃผ์ง€ ์•Š์•„๋„ ๋˜๊ณ  css ํŒŒ์ผ๋„ ํ•„์š”์—†์–ด์„œ ์—„์ฒญ ํŽธํ–ˆ๋‹ค

๊ทผ๋ฐ ๊ณต์‹๋ฌธ์„œ๋ฅผ ๋ณด๋ฉด์„œ ํ•˜๋‚˜ํ•˜๋‚˜ tailwind ํด๋ž˜์Šค ์ด๋ฆ„์„ ์จ์•ผ ํ•ด์„œ ๊ทธ๊ฑด ์ข€ ๋ถˆํŽธํ–ˆ๋‹ค

 

 

 

 

 

 

 

 

1/31

๐Ÿ“ ํ•  ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 16์ผ์ฐจ

 

โœ… ํ•œ ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 16์ผ์ฐจ

์˜ค๋Š˜์˜ ๊ณผ์ œ๋Š” tailwind : ์ƒํ’ˆ ๋ชฉ๋ก ํŽ˜์ด์ง€ ๊ตฌํ˜„ํ•˜๊ธฐ

 

 

 

 

 

 

 

2/1

๐Ÿ“ ํ•  ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 17์ผ์ฐจ

 

โœ… ํ•œ ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 17์ผ์ฐจ

์˜ค๋Š˜์˜ ๊ณผ์ œ๋Š” tailwind : SNS ๊ตฌํ˜„ํ•˜๊ธฐ

 

 

 

 

 

 

 

2/2

๐Ÿ“ ํ•  ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 18์ผ์ฐจ

 

โœ… ํ•œ ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 18์ผ์ฐจ

์˜ค๋Š˜์˜ ๊ณผ์ œ๋Š” tailwind : SNS 2 ๊ตฌํ˜„ํ•˜๊ธฐ

์˜ค๋Š˜์€ ๋ชจ๋‹ฌ ๊ธฐ๋Šฅ๋„ ์ถ”๊ฐ€ ๋๋‹ค

 

 

1/23

๐Ÿ“ ํ•  ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 9์ผ์ฐจ
  • ๋ฆฌ์•กํŠธ Youtube ํ† ์ด ํ”„๋กœ์ ํŠธ : ์ƒ์„ธํŽ˜์ด์ง€ ์ž‘์—…

 

โœ… ํ•œ ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 9์ผ์ฐจ

์˜ค๋Š˜์˜ ๊ณผ์ œ๋Š” ์˜ํ™” ๋ชฉ๋ก ๋ฌดํ•œ์Šคํฌ๋กค

useInfiniteQuery ๋ฅผ ์ด์šฉํ•ด์„œ ๋ฌดํ•œ์Šคํฌ๋กค์ด ๋˜๋„๋ก ์˜ํ™” ๋ชฉ๋ก์ด ๊ณ„์† ๋‚˜์˜ค๊ฒŒ ํ•˜๋Š” ์ž‘์—…์ด์—ˆ๋‹ค

๋ฌธ์„œ๋„ ๋’ค์ ธ๋ณด๊ณ , ๊ตฌ๊ธ€๋ง๋„ ํ•ด๋ดค์ง€๋งŒ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ์ž˜ ์—†๋Š”์ง€ ์ •๋ณด๊ฐ€ ๊ทธ๋ฆฌ ๋งŽ์ง€ ์•Š์•˜๋‹ค

๊ทธ๋ž˜์„œ ๋‹ค๋ฅธ ํŒ€์›์˜ ์ฝ”๋“œ๋ฅผ ์‚ด์ง ์ฐธ๊ณ ํ–ˆ๋‹ค..ใ…Ž ์ฃ„์†กํ•ด์š” ์•ˆ ๊ทธ๋Ÿฌ๋ฉด ํ•˜๋ฃจ์ฃ™์ผ ๋ถ™์žก๊ณ  ์žˆ์„ ๊ฒƒ ๊ฐ™์•˜์–ด์š”

์‚ฌ์‹ค ๋‚˜๋Š” ์ธ์ž๋กœ title ๋„ ๋„ฃ๊ณ  pageParam ๋„ ๋„ฃ์–ด์„œ ํ•ด์ฃผ๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ณ„์† ๋˜‘ ๊ฐ™์€ ๊ฒƒ๋งŒ ๋‚˜์˜ค๊ธธ๋ž˜ ๋„์ €ํžˆ ํ’€๋ฆฌ์ง€ ์•Š์•„์„œ ๋ณผ ์ˆ˜ ๋ฐ–์— ์—†์—ˆ๋‹ค

title ์„ ๋„ฃ์–ด์ค˜์•ผ ํ•  ๋•Œ๋Š” ๋„๋Œ€์ฒด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ๋˜๋Š”์ง€ ์˜๋ฌธ์ด๋‹ค

 

 

 

  • ๋ฆฌ์•กํŠธ Youtube ํ† ์ด ํ”„๋กœ์ ํŠธ : ์ƒ์„ธํŽ˜์ด์ง€ ์ž‘์—…

์ด์ œ ์Šฌ์Šฌ ๋ฉ˜ํ† ๋‹˜๋“ค์ด ๋ฆฌ๋ทฐ๋„ ์‹œ์ž‘ํ•˜๊ณ  ๊ณ„์‹œ๊ณ  ์ง„์งœ ๋‚˜์˜ค์ง€ ์•Š์œผ๋ฉด ์•ˆ๋  ๊ฒƒ ๊ฐ™์•„์„œ ํ•˜๋ฃจ์ข…์ผ ํ”„๋กœ์ ํŠธ๋งŒ ๋ถ™์žก๊ณ  ์žˆ์—ˆ๋‹ค

์—†๋Š” ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•˜๋ ค๊ณ  ํ•ด์„œ ๋ฌธ์ œ์ธ ๊ฑด๊ฐ€ ์‹ถ์–ด ํ•ด๋‹น ์ •๋ณด๋“ค์ด ์žˆ์„ ๋•Œ ์ถœ๋ ฅํ•ด์ฃผ๋„๋ก ์ „๋ถ€ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ๊ณ  ์ค‘๊ฐ„์— ๋ฐฐํฌ ์‚ฌ์ดํŠธ์— ๋“ฑ๋กํ•ด๋†“์€ api key ์˜ ํ• ๋‹น๋Ÿ‰์ด ๋‹ค ๋˜์–ด์„œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ api ๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ๋ฐฐํฌ ํŽ˜์ด์ง€๋ฅผ ๋‹ค์‹œ ์‹คํ–‰์‹œ์ผœ๋ดค๋‹ค

๊ทธ๋žฌ๋”๋‹ˆ ๋œ๋‹ค..?

 

์ด๊ฒŒ ์™œ ๋˜์ง€? ์•„๋‹ˆ ๋„๋Œ€์ฒด ๋ญ๊ฐ€ ๋ฌธ์ œ์˜€๋˜ ๊ฑฐ๋ƒ๊ณ ~~~~~~~

 

 

 

 

 

 

 

1/24

๐Ÿ“ ํ•  ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 10์ผ์ฐจ

 

โœ… ํ•œ ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 10์ผ์ฐจ

์˜ค๋Š˜์˜ ๊ณผ์ œ๋Š” ์ €๋ฒˆ์— ํ–ˆ๋˜ framer-motion 2 : animation, variants, gestures ๊ตฌํ˜„!

animation ๋งŒ๋“œ๋Š” ๊ฒŒ ์€๊ทผ ์žฌ๋ฐŒ๊ณ  ๊ฒฐ๊ณผ๋ฌผ๋„ ๋ฐ”๋กœ๋ฐ”๋กœ ๋‚˜์˜ค๋‹ˆ๊นŒ ๋ฟŒ๋“ฏํ•˜๊ณ  ๋ง‰ ๊ทธ๋ž˜์„œ framer-motion ํ•  ๋•Œ๋Š” ์žฌ๋ฐŒ๋‹ฟใ…Ž

์ €๋ฒˆ์— ์Šฌ๋ผ์ด๋“œ๊ฐ€ ์˜ค์ž‘๋™ํ–ˆ๋˜ ๋ถ€๋ถ„์€ ์•„์ง ๊ณ ์ณ์ง€์ง€ ์•Š์•„์„œ ์ข€ ์ฐ์ฐํ•˜๋‹ค

 

 

 

 

 

 

 

 

1/25

๐Ÿ“ ํ•  ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 11์ผ์ฐจ

 

โœ… ํ•œ ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 11์ผ์ฐจ

 

์˜ค๋Š˜์˜ ๊ณผ์ œ๋„ framer-motion 3 : drag 1, 2, scroll ๊ตฌํ˜„!

์ด๋ฒˆ ์ฃผ๋Š” ๊ณ„์† framer-motion ๊ณผ์ œ๋ฅผ ๋‚ด์ฃผ์‹ค๋ž‘๊ฐ€๋ณด๋‹ค ์˜คํžˆ๋ ค ์ข‹์•„ ๊ฐ๊ธฐ์— ๊ฑธ๋ฆฌ๊ณ  ๋‚œ ๋’ค๋กœ ์ž๊พธ ๋ชธ์ด ์ถ•์ถ• ์ณ์ง€๊ณ  ์™ ์ง€ ์ง‘์ค‘๋„ ์•ˆ๋๋Š”๋ฐ ์•ฝ๊ฐ„ ์‰ฌ๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ง„ ๊ฒƒ ๊ฐ™๋‹ค

๋‹ˆ๊ผฌ์Œค ๊ฐ•์˜ ๋“ค์œผ๋ฉด ์–ด๋ ค์šด animation ๊ตฌํ˜„๋„ ์Œ‰๊ฐ€๋Šฅ์ด๋ผ๊ตฌ์—ฌ~

์ž๋ง‰ ๋ณด๋Š” ๊ฒŒ ์ฉœ ํž˜๋“ค๊ธด ํ•ด๋„ ๊ฐ€๋” ๋‹ค๋ฅธ ํ•œ๊ตญ ๊ฐ•์˜๋ฅผ ๋ณผ ๋•Œ ์ž๋ง‰์ด ํ•„์š”ํ•  ๋•Œ๊ฐ€ ์ข…์ข…์žˆ๋Š”๋ฐ ์ด๋Ÿฐ ์ ์€ ๋˜ ๋ฉ”๋ฆฌํŠธ๊ฐ€ ๋œ๋‹ค

useMotionValue, useTransform, useScroll ์„ ์‚ฌ์šฉํ•˜์—ฌ ์š”์†Œ์˜ ์›€์ง์ž„์„ ๊ฐ์ง€ํ•˜๊ณ , ๋ฐ˜ํ™˜๋˜๋Š” ๊ฐ’์„ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ style ๋กœ ์ ์šฉ์‹œ์ผœ์ฃผ๋ฉฐ, ์Šคํฌ๋กค์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด์ค€๋‹ค

์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ์—์„œ ์ ์šฉํ•ด๋ณผ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•„ ๊ธฐ๋Œ€๊ฐ€ ๋œ๋‹ค

 

 

 

 

 

 

 

1/26

๐Ÿ“ ํ•  ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 12์ผ์ฐจ
  • ๋…ธ๋งˆ๋“œ ์ฝ”๋” ๋ฆฌ์•กํŠธ ๋งˆ์Šคํ„ฐ state management ์‹ค์Šต

 

โœ… ํ•œ ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 12์ผ์ฐจ

์˜ค๋Š˜์˜ ๊ณผ์ œ๋Š” framer-motion 4 : ๋ชจ๋“  ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๋ฐ ๋ณต์Šต!

์ด๋ฒˆ์—” ๋‹ˆ๊ผฌ์Œค์ด๋ž‘ ๋˜‘ ๊ฐ™์€ ๊ฑธ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ์•ฝ๊ฐ„ ์‘์šฉํ•˜๋Š” ๊ฑฐ๋ผ ์˜ค๋žœ๋งŒ์— ๋จธ๋ฆฌ๋ฅผ ์ข€ ์ผ๋‹ค

์žŠ์—ˆ๋˜ custom ๋„ ๋‹ค์‹œ ์‚ฌ์šฉํ•ด๋ณด๊ณ , layoutId ๋ฅผ ์ƒˆ๋กœ ๋ฐฐ์šฐ๊ณ  AnimatePresence ๋ฅผ ๋‹ค์‹œ ์‚ฌ์šฉํ•ด๋ดค๋‹ค

์—ญ์‹œ ์“ฐ์ง€ ์•Š์œผ๋ฉด ๊นŒ๋จน๋Š”๋‹ค๋”๋‹ˆ ๋ช‡ ์ผ ์ „์— ์“ด ๊ฒƒ๋„ ์ฃ„๋‹ค ๊นŒ๋จน๋Š” ๊ฒƒ ๊ฐ™๋‹ค

๋ฆฌ๋งˆ์ธ๋“œ, ๋ฆฌํŒฉํ† ๋ง ํ•„์ˆ˜ํ•„์ˆ˜!!!

 

 

  • ๋…ธ๋งˆ๋“œ ์ฝ”๋” ๋ฆฌ์•กํŠธ ๋งˆ์Šคํ„ฐ state management ์‹ค์Šต

crypto tracker ํ”„๋กœ์ ํŠธ๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ recoil ์„ ์“ฐ๋ฉด์„œ ๋งˆ๋ฌด๋ฆฌ๋๋‹ค

์š”์ฆ˜ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ recoil ์„ ๋งŽ์ด ์“ด๋‹ค๋˜๋ฐ ํ™•์‹คํžˆ redux ์“ฐ๋Š” ๊ฑฐ๋ž‘ ๋‹ฌ๋ž๋‹ค

๊ธฐ๋Šฅ๋„ ์ข‹๊ณ  ๊ฐ„๋‹จํ•˜๊ณ  ์ฝ”๋“œ๋„ ์ข€ ๋” ๊ฐ€๋…์„ฑ์ด ์žˆ์–ด์กŒ๋‹ค

mobx ๋ฅผ ๋ฐฐ์šฐ๋ฉด์„œ ์™€ redux ๋Š” ์ฒœ์‚ฌ๋‹ค ๋ผ๋Š” ์ƒ๊ฐ์„ ํ–ˆ์—ˆ๋Š”๋ฐ recoil ์€ ๋ญ ๊ฑฐ์˜ ํ•˜์‚ฌ์žฅ ์ˆ˜์ค€์œผ๋กœ ํŽธํ–ˆ๋‹ค

์ €์žฅ์†Œ๋„ atom ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์„œ key ์™€ default ๊ฐ’์„ ์จ์ฃผ๋ฉด ๋์ด๊ณ  ์ˆ˜์ •๋„ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ๋„ ์ฝ”๋“œ ํ•œ ์ค„์ด๋ฉด ๋, ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ๋„ useState ๋งˆ๋ƒฅ ์“ฐ๋ฉด ๋. ์ด๊ฑด ํ˜๋ช…์ด์•ผ~~ recoil ์•ˆ ์“ฐ๋ฉด ๋ฐ”๋ณด...๋Š”! ์•„๋‹˜ ์•ˆ์“ธ ์ˆ˜๋„ ์žˆ์ง€..

 

 

 

 

 

 

 

 

1/27

๐Ÿ“ ํ•  ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 13์ผ์ฐจ

 

โœ… ํ•œ ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 13์ผ์ฐจ

์˜ค๋Š˜์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—†์ด form ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๊ตฌํ˜„!

ํ™•์‹คํžˆ ์ด๋•Œ๊นŒ์ง€ react-hook-form ์„ ์ด์šฉํ•ด ๊ตฌํ˜„ํ–ˆ๋˜ ๊ฒƒ์„ ์—†์ด ๊ตฌํ˜„ํ•˜๋ ค๋‹ˆ๊นŒ ์ข€ ๊ท€์ฐฎ๊ณ  ์ฝ”๋“œ์–‘๋„ ๋งŽ์•„์ง€๊ณ  ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์กŒ๋‹ค

๊ทธ๋ž˜๋„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—†์ด ํ•œ๋ฒˆ์”ฉ ๊ตฌํ˜„ํ•ด๋ณด๋Š” ๊ฒƒ์ด ์–ธ์–ด๋ฅผ ์ดํ•ดํ•˜๊ณ  ๋ฐฐ์šฐ๋Š” ๋ฐ์— ๋งŽ์€ ๋„์›€์ด ๋˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค

 

 

 

 

 

 

 

 

1/28

๐Ÿ“ ํ•  ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 14์ผ์ฐจ
  • ๋…ธ๋งˆ๋“œ ์ฝ”๋” ๋ฆฌ์•กํŠธ ๋งˆ์Šคํ„ฐ state management ์‹ค์Šต

 

โœ… ํ•œ ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 14์ผ์ฐจ

์˜ค๋Š˜์€ react-hook-form ์ด์šฉํ•ด์„œ form ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๊ตฌํ˜„!

๊ฒŒ๋น„์Šค์ฝ˜~ ๋„ˆ๋ฌด ๋ง˜์ด ํŽธ์•ˆํ•˜๊ณ  ๊ตฌํ˜„ํ•˜๊ธฐ ์‰ฌ์› ๋‹ค

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋งŒ ์™•์ฐฝ ์“ฐ๊ณ  ์‹ถ์€ ๋‚ด ๋งˆ์Œ.. ๋„ˆ๋ฌด ์—ผ์น˜์—†๋Š” ๊ฒƒ์ผ๊นŒ?

 

 

 

  • ๋…ธ๋งˆ๋“œ ์ฝ”๋” ๋ฆฌ์•กํŠธ ๋งˆ์Šคํ„ฐ state management ํŒŒํŠธ

react-hook-form ์„ ๋ฐฐ์› ๋Š”๋ฐ ์ด์ „์— 4์ฐจ๊ณผ์ œํ•˜๋ฉด์„œ ํ•œ๋ฒˆ ์‚ฌ์šฉํ•ด๋ด์„œ ์ˆ˜์›”ํ•˜๊ฒŒ ์ง„ํ–‰ํ–ˆ๋‹ค

์ด๋ฒˆ ํŒŒํŠธ๊ฐ€ ๊ธด ํŽธ์ด๋ผ ํ•˜๋ฃจ์— ๋‹ค ๋“ฃ์ง„ ๋ชปํ•˜๊ณ  ๋‚˜๋ˆ ์„œ ๋“ฃ๊ณ  ์žˆ๋Š”๋ฐ ์ด๋งˆ์ €๋„ ๊ณ„์† ๋‹ค๋ฅธ ์ผ์— ์น˜์—ฌ์„œ ์ง„ํ–‰์„ ๋ชปํ•˜๊ณ  ์žˆ๋‹ค

 

 

 

 

 

 

 

 

 

 

1/16

๐Ÿ“ ํ•  ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 7์ผ์ฐจ
  • 4์ฐจ ๊ณผ์ œ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ : ๊ทธ๋ฆฌ๋“œ ์ •๋ ฌ ๋!
  • ๋ฆฌ์•กํŠธ Youtube ํ† ์ด ํ”„๋กœ์ ํŠธ ์‹œ์ž‘!

 

โœ… ํ•œ ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 7์ผ์ฐจ

์˜ค๋Š˜์˜ ๊ณผ์ œ๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ ์šฉ!

์˜ˆ์‹œ๊ฐ€ ๋„ˆ๋ฌด ์ž˜ ๋˜์–ด ์žˆ์–ด์„œ ์ ์šฉํ•˜๋Š”๋ฐ ์–ด๋ ค์›€์€ ์—†์—ˆ๋‹ค

๊ทธ๋ฆฌ๊ณ  ์‚ฌ์‹ค ์ผ๋ฐ˜ํ•จ์ˆ˜ ๊ฐ™์€ ๊ฒฝ์šฐ ๊ฐ•์˜๋„ ์–ด๋А์ •๋„ ๋ณด๋ฉด์„œ ์ต์ˆ™ํ•ด์กŒ๋Š”๋ฐ class ๋‚˜ hook, api return ๊ฐ’์€ ์•„์ง ์–ด๋ ค์›Œ์„œ ํ—ค๋งค๊ณ  ์žˆ๋‹ค

ํ”„๋กœ์ ํŠธ๋ฅผ ํƒ€์ž… ์Šคํฌ๋ฆฝํŠธ๋กœ ์ง„ํ–‰ํ•  ๋•Œ๋„ ํƒ€์ž…์„ ์ ์šฉํ•˜์ง€ ์•Š์•„์„œ ๋ฐ‘์ค„์ด ๊ฐ€ ์žˆ๋Š”๋ฐ ๋ชป ๋ณธ ์ฒ™ ์ง€๋‚˜๊ฐˆ ๋•Œ๋„ ์žˆ์—ˆ๋‹ค...

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ๊ณ„์† ์—ฐ์Šต์„ ํ•ด๋ด์•ผ ๊ฒ ๋‹ค

 

 

  • 4์ฐจ ๊ณผ์ œ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ : ๊ทธ๋ฆฌ๋“œ ์ •๋ ฌ ๋!


๊ทธ๋ฆฌ๋“œ
์ •๋ ฌ์ด ๋งˆ๋ฌด๋ฆฌ๊ฐ€ ๋๋‹ค

์ผ๋‹จ ๋ฆฌ์ŠคํŠธ๋ทฐ์™€ ์ด๋ฏธ์ง€๋ทฐ๊ฐ€ ๊ตฌ์กฐ ์ž์ฒด๊ฐ€ ๋‹ค๋ฅด๊ณ  ์ด๋ฏธ์ง€๋ทฐ๋ฅผ ๋‹จ๋…์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ถ€๋ถ„๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ถ”ํ›„์— ์ „์ฒด ์ˆ˜์ •์„ ๊ฑฐ์น˜๊ธฐ ์ „๊นŒ์ง€๋Š” ๋ฆฌ์ŠคํŠธ ์ปดํฌ๋„ŒํŠธ์™€ ์ด๋ฏธ์ง€ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‚˜๋ˆ ๋‘๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค

๊ทธ๋ฆฌ๊ณ  ์ด๋ฏธ์ง€ ์ปดํฌ๋„ŒํŠธ ์•ˆ์—์„œ grid ์— ๋Œ€ํ•œ ๊ฐ’์„ ๋ฐ›์•„์„œ ์ด๋ฏธ์ง€๋ทฐ, ํฐ์ด๋ฏธ์ง€๋ทฐ, ๊ฐค๋Ÿฌ๋ฆฌ๋ทฐ๋ฅผ ์„ ํƒํ•˜๋ฉด ๊ฐ๊ฐ ๋‹ค๋ฅธ ์Šคํƒ€์ผ๋ง์„ ์ฃผ๋„๋ก state ๋กœ ๊ด€๋ฆฌํ–ˆ๋‹ค

๊ฐ ๊ทธ๋ฆฌ๋“œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ui ํด๋”๋กœ ๋„ฃ์„์ง€์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์€ ๋” ํ•ด๋ด์•ผํ•  ๊ฒƒ ๊ฐ™์•„์„œ ์ผ๋‹จ ์ „์ฒด์ƒํ’ˆ ์ปดํฌ๋„ŒํŠธ์— ๋„ฃ์–ด์„œ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๋‹ค

ํ›…์œผ๋กœ ๋งŒ๋“œ๋Š” ๋ถ€๋ถ„๋„ ์ผ๋‹จ ์ถ”ํ›„์— ๋” ๋งŽ์€ ๋กœ์ง์ด ์ƒ๊ธธ ๊ฒฝ์šฐ ๊ทธ๋•Œ ํ›…์„ ๋งŒ๋“ค์–ด์•ผ ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์–ด ๋ณด๋ฅ˜ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค

 

 

  • ๋ฆฌ์•กํŠธ Youtube ํ† ์ด ํ”„๋กœ์ ํŠธ ์‹œ์ž‘!

์ฒซ ํšŒ์˜๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค

ํŒ€์› ์ค‘ ํ•œ๋ถ„์ด ๊ฑฐ์˜ ์กฐ์žฅ๊ฒฉ์œผ๋กœ ์ดˆ๊ธฐ ์„ธํŒ…์„ ๋‹ค ํ•ด๋†“์œผ์…”์„œ ์ด๋Ÿฌ์ €๋Ÿฌ ์„ธํŒ…์€ ๋นจ๋ฆฌ ๋๋‚ฌ๋‹ค

css๋ฐฉ์‹, jsxํŒŒ์ผ๋ช… ๋ฐฉ์‹, ๋ณ€์ˆ˜๋ช…, fetchํ•จ์ˆ˜ ๋ฐฉ์‹, ํด๋ž˜์Šค์ด๋ฆ„ ๋ฐฉ์‹, ํด๋” ๊ตฌ์กฐ, ํŒŒ์ผํŠธ๋ฆฌ๊ตฌ์„ฑ, ์ปค๋ฐ‹๊ทœ์น™, merge ๋ฐฉ์‹, ํฐํŠธ ๋‹จ์œ„, ๋ฌธ์„œํ™” ๋ฐฉ์‹, ๊นƒํ—™ issueํ™œ์šฉ, prettier ๋“ฑ ์ƒ๊ฐ๋‚˜๋Š” ๋Œ€๋กœ ์ปจ๋ฒค์…˜์„ ์ •ํ–ˆ๋‹ค

์‚ฌ์‹ค ์ด๋ ‡๊ฒŒ ๋งŽ์ด ์ •ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋„ ๋‚˜์ค‘๊ฐ€๋ฉด ์ •ํ•  ๊ฒƒ์ด ๋˜ ๋‚˜์˜ค๊ณ  ๊ณ„์† ๋‚˜์˜ค๊ธฐ ๋•Œ๋ฌธ์— ์ด์ •๋„๋งŒํ•˜๊ณ  ์ดˆ๊ธฐ ์„ธํŒ…์„ ์œ„ํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งˆ์ณค๋‹ค

๊ทธ๋ฆฌ๊ณ  ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๋ถ„๋ฐฐ๋ฅผ ํ–ˆ๋Š”๋ฐ ๋‚˜๋Š” ์˜์ƒ ์ธ๋„ค์ผ์„ ํด๋ฆญํ•˜๋ฉด ๋‚˜์˜ค๋Š” ๋””ํ…Œ์ผํŽ˜์ด์ง€๋ฅผ ๋งก๊ฒŒ ๋˜์—ˆ๋‹ค

์‚ฌ์‹ค ๋””ํ…Œ์ผ ํŽ˜์ด์ง€๋ฅผ ์ž˜ ์•ˆํ•ด๋ณด๊ธฐ๋„ ํ–ˆ๊ณ  ๋ฐ์ดํ„ฐ ๊ฐ€๊ณตํ•˜๋Š” ์—ฐ์Šต์„ ํ•ด๋ณด๊ณ  ์‹ถ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ข€ ์˜ค๋ž˜ ๊ฑธ๋ฆด ๊ฒƒ ๊ฐ™์•˜์ง€๋งŒ ๋””ํ…Œ์ผ ํŽ˜์ด์ง€๋ฅผ ์„ ํƒํ–ˆ๋‹ค

 

 

 

 

 

 

 

 

1/17

๐Ÿ“ ํ•  ์ผ

  • ๋ฆฌ์•กํŠธ Youtube ํ† ์ด ํ”„๋กœ์ ํŠธ : api ๊ธฐ๋ณธ ์„ธํŒ…, ์ƒ์„ธํŽ˜์ด์ง€ ์ž‘์—… ์‹œ์ž‘

 

โœ… ํ•œ ์ผ

  • ๋ฆฌ์•กํŠธ Youtube ํ† ์ด ํ”„๋กœ์ ํŠธ : api ๊ธฐ๋ณธ ์„ธํŒ…, ์ƒ์„ธํŽ˜์ด์ง€ ์ž‘์—… ์‹œ์ž‘

git clone ์„ ํ•˜๋Š”๋ฐ ์ž๊พธ master ๋ธŒ๋žœ์น˜๋Š” ๋ฐ›์•„์˜ค์งˆ ๋ชปํ•ด์„œ git flow init ์„ ํ•  ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์—ˆ๋‹ค

๊ทธ๋ž˜์„œ ํŒ€์›์ด git flow init -d ๋ฅผ ํ•˜๋ฉด ๊ฐ•์ œ๋กœ ํ•ด์ฃผ๋Š”๊ฑฐ๋ผ master ๋ธŒ๋žœ์น˜๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค๊ณ  ํ•ด์„œ ํ•ด๋ดค๋”๋‹ˆ ์ œ๋Œ€๋กœ ์ž‘๋™ํ–ˆ๋‹ค

 

axios ๋กœ ๊ธฐ๋ณธ ์„ธํŒ…ํ•˜๋Š” ๊ฒƒ์€ ์ฒ˜์Œ์ด๋ผ ์กฐ๊ธˆ ์˜ค๋ž˜ ๊ฑธ๋ ธ๋‹ค

์ค‘๊ฐ„์— ๋‹ค๋ฅธ ํŒ€์›์˜ ๋„์›€์„ ๋ฐ›์œผ๋ ค๊ณ  ํ•˜๊ธฐ๋„ ํ–ˆ๋Š”๋ฐ ํ•œ๋ฒˆ ๋‚ด๊ฐ€ ๋๋‚ด๋ณด์ž ํ•˜๋Š” ๋งˆ์Œ์œผ๋กœ ์ง€๊ธˆ๊นŒ์ง€ ํ•ด์™”๋˜ ํ”„๋กœ์ ํŠธ๋“ค์„ ๋ณด๋ฉด์„œ ์ž‘์„ฑํ–ˆ๋‹ค

์‚ฌ์‹ค ๋งจ๋‚  fetch ๋‚˜ async await ๋งŒ ์ผ์ง€ axios ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ดํ•ด๋„ ๊ฑฐ์˜ ์—†์–ด์„œ axios ๊ฐ€ ์–ด๋–ค ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ๋ชฐ๋ž๋‹ค

axios ๋ฅผ ๋ถˆ๋Ÿฌ์„œ api ํ‚ค์™€ ๊ธฐ๋ณธ url ๋ฅผ ์„ธํŒ…ํ•˜๊ณ  ์„ธํŒ…ํ•œ axios ํŒŒ์ผ์„ ๋‹ค์‹œ request ํŒŒ์ผ๋กœ ๋ถˆ๋Ÿฌ์„œ axios.get ์œผ๋กœ fetch ํ•  ๊ธฐ๋ณธ url ๋’ค๋ฅผ ์ž‘์„ฑํ•ด์ฃผ๋ฉด ์ž๋™์œผ๋กœ json ์ด return ๋œ๋‹ค๋Š” ๊ฒƒ์— ๋†€๋ž๋‹ค

์ด๋ ‡๊ฒŒ ํŽธํ•œ ๊ฒƒ์„ ์™œ ์ฒ˜์Œ๋ณธ๋‹ค๊ณ  ๋งŽ์ด ์จ๋ณด์ง€ ์•Š์•˜๋Š”์ง€ ํ›„ํšŒ๋  ์ •๋„์˜€๋‹ค

๊ทผ๋ฐ ํ…Œ์ŠคํŠธ๋ฅผ ๋„ˆ๋ฌด ๋งŽ์ด ํ–ˆ๋”๋‹ˆ api ์š”์ฒญ์„ ๋„ˆ๋ฌด ๋ง‰ ์จ์„œ ์ผ์ผํ• ๋‹น๋Ÿ‰์ด ๊ธˆ๋ฐฉ ๋๋‚ฌ๋‹คใ…Žใ…Ž..

 

 

์ผ๋‹จ ํ•˜๋“œ์ฝ”๋”ฉ์œผ๋กœ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‚˜๋ˆ„์ง€ ์•Š๊ณ  ์ •๋ณด๊ฐ€ ์ž˜ ๋‚˜์˜ค๋Š”์ง€ ํ™•์ธํ–ˆ๋‹ค

๊ทธ๋Ÿฐ๋ฐ ํ™”๋ฉด์€ ์ž˜ ๋‚˜์˜ค๊ธฐ๋Š” ํ•œ๋ฐ ์ฝ˜์†”์— ์ž๊พธ ์ด๋Ÿฐ ์—๋Ÿฌ๊ฐ€ ๋– ์„œ ๋ญ”์ง€ ํ™•์ธํ–ˆ๋”๋‹ˆ ํฌ๋กฌ์— adblock ํ™•์žฅํ”„๋กœ๊ทธ๋žจ์ด ์žˆ์œผ๋ฉด ์ด๋Ÿฐ ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค๊ณ  ํ•œ๋‹ค ๋ฌด์‹œํ•ด๋„ ๋œ๋‹ค๊ณ  ํ•˜๋‹ˆ ๋‹คํ–‰์ด๋‹ค

 

๋ฆฌ์•กํŠธ ๊ณผ์ œ๋Š” ์ƒˆ๋กœ ์‹œ์ž‘ํ•œ ํ† ์ด ํ”„๋กœ์ ํŠธ์— ์ง‘์ค‘ํ•˜๊ธฐ๋กœ ํ•ด์„œ ์ž ๊น ์ค‘๋‹จํ–ˆ๋‹ค

 

 

 

 

 

 

1/18

๐Ÿ“ ํ•  ์ผ

  • ๋ฆฌ์•กํŠธ Youtube ํ† ์ด ํ”„๋กœ์ ํŠธ : ์ƒ์„ธํŽ˜์ด์ง€ ์ž‘์—…

 

โœ… ํ•œ ์ผ

  • ๋ฆฌ์•กํŠธ Youtube ํ† ์ด ํ”„๋กœ์ ํŠธ : ์ƒ์„ธํŽ˜์ด์ง€ ์ž‘์—…

์ž‘์—…์„ ๋นจ๋ฆฌ ๋๋‚ด๊ณ  4์ฐจ ๊ณผ์ œ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ตฌํ˜„์„ ํ•˜๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ ์š”์ฆ˜ ๋ฉด์—ญ๋ ฅ์ด ์•ˆ ์ข‹์•„์ง„๊ฑด์ง€ ๊ฐ๊ธฐ๊ฐ€ ๊ฑธ๋ ค์„œ ์ž‘์—…์„ ๊ฑฐ์˜ ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค

ํ•˜๋“œ ์ฝ”๋”ฉ์œผ๋กœ ๋จผ์ € ์ •๋ณด๋“ค์ด ์ž˜ ๋“ค์–ด์˜ค๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๊ฐ ์˜์ƒ ์ •๋ณด, ์ฑ„๋„ ์ •๋ณด, ๋Œ“๊ธ€ ์ •๋ณด, ์—ฐ๊ด€ ๋™์˜์ƒ ์ •๋ณด๋กœ ๋‚˜๋ˆ„์–ด์„œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ž‘์—…ํ–ˆ๋‹ค

ํ•˜๋‹ค๊ฐ€ ์ค‘๊ฐ„์— useQuery ๋กœ ๋ฆฌํŒฉํ† ๋ง์„ ํ•ด๋ณด๋ ค๊ณ  ํ–ˆ์œผ๋‚˜ ๋ถˆ๋Ÿฌ์˜ค๋Š” api ๊ฐ€ ๋งŽ๋‹ค๋ณด๋‹ˆ ์ผ์ผํ• ๋‹น๋Ÿ‰์ด ๋„ˆ๋ฌด ๋นจ๋ฆฌ ๋‹ณ์•„์„œ useEffect ๋กœ localStorage ์— ์ €์žฅํ•ด์„œ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค

ํ™•์‹คํžˆ ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅํ•˜๋‹ˆ ์ฝ”๋“œ๋„ ๊ธธ์–ด์ง€๊ณ  ๋กœ์ง๋„ ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ ธ์„œ ์ด ๋ถ€๋ถ„์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์€ ๊ณ„์† ํ•ด๋ด์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค

 

 

 

 

 

 

 

1/19

๐Ÿ“ ํ•  ์ผ

  • ๋ฆฌ์•กํŠธ Youtube ํ† ์ด ํ”„๋กœ์ ํŠธ : ์ƒ์„ธํŽ˜์ด์ง€ ์ž‘์—…

 

โœ… ํ•œ ์ผ

  • ๋ฆฌ์•กํŠธ Youtube ํ† ์ด ํ”„๋กœ์ ํŠธ : ์ƒ์„ธํŽ˜์ด์ง€ ์ž‘์—…

๋กœ์ปฌ๋กœ ์ €์žฅํ•˜๋Š” ๊ฒƒ์„ ํ…Œ์ŠคํŠธ ํ•˜๋‹ค๊ฐ€ ์ผ์ผํ• ๋‹น๋Ÿ‰์ด ๋‹ค ๋‹ณ์•„์„œ ๊ทธ๋™์•ˆ ๋‹ค๋ฅธ ํŒ€์›๋“ค ์˜ค๋ฅ˜๋ฅผ ๋ด์ฃผ๋ฉด์„œ ์‹œ๊ฐ„์„ ๋ณด๋‚ธ ๋’ค ๋‹ค์‹œ ์ผ์ผ ํ• ๋‹น๋Ÿ‰์ด ์ดˆ๊ธฐํ™”๋˜์–ด์„œ ๋กœ์ปฌ์— ์ €์žฅํ•˜๋Š” ์ž‘์—…์„ ๊ณ„์† ํ–ˆ๋‹ค

๊ทผ๋ฐ ์—ฐ๊ด€ ๋™์˜์ƒ์„ ๋ณด์—ฌ์ฃผ๋Š” ๋ฐ์ดํ„ฐ์— ์˜์ƒ ๊ธธ์ด์™€ ์กฐํšŒ์ˆ˜ ์ •๋ณด๊ฐ€ ์—†์–ด์„œ ๊ฐ ์˜์ƒ์˜ id ๋กœ ํ•˜๋‚˜ํ•˜๋‚˜ ํŠน์ • ๋™์˜์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์™€์ฃผ๋Š” api ๋กœ ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ํ•˜๋”๋ผ..

๋กœ์ปฌ๋กœ ์ €์žฅํ•˜์—ฌ ํ™”๋ฉด์— ์ž˜ ๋‚˜์˜ค๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์—ฐ๊ด€ ๋™์˜์ƒ ์ •๋ณด ์ปดํฌ๋„ŒํŠธ์˜ ์ž์‹ ์ปดํฌ๋„ŒํŠธ ์•ˆ์—์„œ id ๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ useEffect ๋กœ ์ •๋ณด๋ฅผ ์ถ”์ถœํ•˜๋Š” ์ž‘์—…์„ ํ–ˆ๋‹ค

 

 

 

 

 

 

 

 

1/20

๐Ÿ“ ํ•  ์ผ

  • ๋ฆฌ์•กํŠธ Youtube ํ† ์ด ํ”„๋กœ์ ํŠธ : ์ƒ์„ธํŽ˜์ด์ง€ ์ž‘์—…
  • ๊ฐœ๋ฐœ ๋ธ”๋กœ๊ทธ ์ •๋ฆฌ & ์ œ์ถœ

 

โœ… ํ•œ ์ผ

  • ๋ฆฌ์•กํŠธ Youtube ํ† ์ด ํ”„๋กœ์ ํŠธ ๋งˆ๊ฐ๋‚  : ์ƒ์„ธํŽ˜์ด์ง€ ์ž‘์—…

์ƒˆ๋ฒฝ 4์‹œ๊นŒ์ง€ ์ž‘์—…ํ•ด์„œ ๋ฐ˜์‘ํ˜•๊ณผ ๋ฐ์ดํ„ฐ ๊ฐ€๊ณต๋„ ๋๋ƒˆ๋Š”๋ฐ ๋‹ค๋ฅธ ํŒ€์›์ด ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค๊ณ  ํ–ˆ๋‹ค..

๊ทธ๋ž˜์„œ ๋กœ์ปฌ์— ์ €์žฅํ•œ ๋ฐ์ดํ„ฐ๋“ค์„ ์ฃ„๋‹ค ์‚ญ์ œํ•˜๊ณ  ๋‹ค์‹œ ์‹คํ–‰ํ•ด๋ดค๋”๋‹ˆ ์˜ค๋ฅ˜๊ฐ€ ์˜ค์กฐ์˜ค์–ตใ…กใ…ก

์•Œ๊ณ ๋ณด๋‹ˆ ๋กœ์ปฌ์— ์ €์žฅํ•˜์ง€๋„ ์•ˆํ–ˆ๋Š”๋ฐ ๊บผ๋‚ด์„œ ํ™”๋ฉด์— ๋ฟŒ๋ ค์ค„๋ผ๋‹ˆ๊นŒ ์•ˆ๋œ๋‹ค๊ณ  ํ•˜๋”๋ผ

๋ถˆ๋Ÿฌ์˜จ ๋ฐ์ดํ„ฐ๋“ค๋งˆ๋‹ค ํ•˜๋‚˜์”ฉ loading state ๋ฅผ ์„ธํŒ…ํ•ด์ฃผ๊ณ  ๋กœ๋”ฉ์ด ๋๋‚˜์•ผ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ถœ๋ ฅํ•ด์ฃผ๋„๋ก ํ–ˆ๋‹ค

๊ทธ๋žฌ๋”๋‹ˆ ๋˜ ์—ฐ๊ด€ ๋™์˜์ƒ์˜ ์ž์‹ ์ปดํฌ๋„ŒํŠธ์—์„œ api ํ˜ธ์ถœ ๋ฐ์ดํ„ฐ๋“ค์ด ๋‹ค ๋“ค์–ด์˜ค์ง€ ์•Š๊ธธ๋ž˜ ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ๋กœ ๋นผ์„œ id ๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ map ์œผ๋กœ ๋Œ๋ ค์„œ ํ•œ ๊ณณ์— ์ €์žฅํ•ด์„œ ์ •๋ณด๋“ค์„ props ๋กœ ๋‚ด๋ ค์„œ ์ถœ๋ ฅํ•ด์คฌ๋‹ค

๊ทผ๋ฐ ๋‹ค๋ฅธ ํŒ€์›์˜ ํŽ˜์ด์ง€์—์„œ๋Š” ๋‚˜์˜ค์งˆ ์•Š๋Š”๋Œ„๋‹ค ๋ฐฐํฌ ํŽ˜์ด์ง€์—์„œ๋งŒ ์ž˜ ๋‚˜์˜ค๋ฉด ๋ผ์„œ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š”๋ฐ ๋ฐฐํฌ๊ฐ€ ์•ˆ๋œ๋‹ค ์™œ์ด๋Ÿฌ๋ƒ ์ง„์งœ~~~~

์ œ์ถœํ•˜๋Š” ๋‚ ์ธ๋ฐ ๋‚œ๋ฆฌ๋‚ฌ๋‹ค

 

 

  • ๊ฐœ๋ฐœ ๋ธ”๋กœ๊ทธ ์ •๋ฆฌ & ์ œ์ถœ

ํ•ด๋กฑํ•ด๋กฑ๋Œ€๋‹ค๊ฐ€ ๋ณ‘์› ๊ฐ”๋‹ค๊ฐ€ ์ œ์ถœ ์‹œ๊ฐ„์ด ๋‹ค ๋ผ์„œ ์ œ์ถœ ๋จผ์ €ํ•˜๊ณ  ์ •๋ฆฌ๋ฅผ ํ–ˆ๋‹ค

์˜ค๋Š˜ ๋˜ ์ผ์ฐ ์ผ์–ด๋‚˜๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ์–ด์ œ ๋Šฆ๊ฒŒ ์ผ์–ด๋‚˜์„œ ์‹คํŒจ.. ๋ญํ•˜๋‚˜ ๋˜๋Š”๊ฒŒ ์๋”ฐ^^

 

 

 

 

 

 

 

1/22

๐Ÿ“ ํ•  ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 8์ผ์ฐจ
  • ๋ฆฌ์•กํŠธ Youtube ํ† ์ด ํ”„๋กœ์ ํŠธ : ์ƒ์„ธํŽ˜์ด์ง€ ์ž‘์—… ๋””๋ฒ„๊น…

 

โœ… ํ•œ ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 8์ผ์ฐจ

ํ† ์ดํ”„๋กœ์ ํŠธ๊ฐ€ ์–ด๋А์ •๋„ ๋งˆ๋ฌด๋ฆฌ๊ฐ€ ๋˜์–ด์„œ ์ด์ œ ๋‹ค์‹œ ๊ณผ์ œ๋ฅผ ์‹œ์ž‘ํ–ˆ๋‹ค

์˜ค๋Š˜์˜ ๊ณผ์ œ๋Š” class ๋กœ ์ด๋™ ๊ธฐ๋ก ์ธ์Šคํ„ด์Šค ํ™”๋ฉด์— ์ถœ๋ ฅํ•˜๊ธฐ

class ๋Š” ์•„์ง ์ต์ˆ™์น˜ ์•Š์•„์„œ ์—„์ฒญ ํ—ค๋งธ๋‹ค.. ์•ž์œผ๋กœ class ๋ฅผ ์ž์ฃผ ์“ฐ๋‹ค๋ณด๋ฉด ์ต์ˆ™ํ•ด์ง€๊ฒ ์ง€? ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ ์“ธ ๊ธฐํšŒ๊ฐ€ ๋งŽ์ง€ ์•Š๋‹ค!!!!!ใ… ใ…œ

์–ธ์ œ์ฏค js ๋ฅผ ์ž์œ ์ž์žฌ๋กœ ์“ธ ์ˆ˜ ์žˆ์„๊นŒ ๋„ˆ๋ฌด๋‚˜ ๊นŒ๋งˆ๋“ํ•˜๋‹ค

๋ฆฌ์…‹ํ•˜๋Š” ๊ฑด ์ฃฝ์–ด๋„ ์•ˆ๋ผ์„œ ๊ทธ๋ƒฅ ์ œ์ถœํ–ˆ๋”๋‹ˆ clear ๋Š” state ์— ๋‚จ์•„์žˆ๋Š” ๊ฐ’๋“ค์„ ๋น„์›Œ์ค€๊ฑฐ์ง€ ์ธ์Šคํ„ด์Šค๋ฅผ ์ดˆ๊ธฐํ™”ํ•ด์ค€ ๊ฑด ์•„๋‹ˆ๋ผ์„œ ๊ฐ’์€ ๊ทธ๋Œ€๋กœ ๋‚จ์•„์žˆ๋Œ„๋‹ค

๋ญ” ๋ง์ด์—ฌ.. ํ•œ๊ธ€์ธ๋ฐ ์™œ ์ดํ•ด๊ฐ€ ์•ˆ๋˜์ฃ  ์„ ์ƒ๋‹˜..?

 

 

  • ๋ฆฌ์•กํŠธ Youtube ํ† ์ด ํ”„๋กœ์ ํŠธ : ์ƒ์„ธํŽ˜์ด์ง€ ์ž‘์—… ๋””๋ฒ„๊น…

์„ค์ด๋ผ ์–ด์ œ ๋ณธ๊ฐ€์— ๋‚ด๋ ค์™€์„œ ํ•˜๋ฃจ์ฃ™์ผ ์‰ฌ๊ณ  ์˜ค๋Š˜๋ถ€ํ„ฐ ๋ฐฐํฌํŽ˜์ด์ง€์— ๋‚˜์˜ค์ง€ ์•Š๋Š” ์ƒ์„ธํŽ˜์ด์ง€๋ฅผ ๋‹ค์‹œ ์ž‘์—…ํ–ˆ๋‹ค

์™œ ์ž๊พธ localStorage ๊ฐ€ undefined ๋กœ ์ €์žฅ์ด ๋˜๋Š”์ง€ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด ํ™”๋ฉด์— ์ถœ๋ ฅ๋˜๋Š” ๊ณผ์ •์—์„œ ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š” ๊ฑด๊ฐ€ ์‹ถ์–ด์„œ ์ •๋ณด๋ฅผ ์ถœ๋ ฅ์‹œํ‚ค๋Š” ์ปดํฌ๋„ŒํŠธ๋“ค์„ ๋ชจ๋‘ ์ฃผ์„์ฒ˜๋ฆฌ๋„ ํ•ด๋ณด๊ณ , ์ •๋ณด๊ฐ€ ์ž˜ ๋“ค์–ด์˜ค์ง€ ์•Š๋Š” ๊ฑด๊ฐ€ ์‹ถ์–ด์„œ ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅํ•˜์ง€ ์•Š๊ณ  useEffect ๋กœ api ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ state ์— ์ €์žฅํ•ด์„œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ถœ๋ ฅ์‹œ์ผœ ๋ณด๊ธฐ๋„ ํ–ˆ๋‹ค

์˜จ๊ฐ– ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ด๋„ ์ž˜ ๋˜์ง€ ์•Š์•˜๋‹ค

 

 

 

 

 

 

1/9

๐Ÿ“ ํ•  ์ผ

  • 4์ฐจ ๊ณผ์ œ ๋ฆฌํŒฉํ† ๋ง : ๋ฐฐ์†ก๋น„ ๊ฒฐ์ œ ๋กœ์ง ์ˆ˜์ •

 

โœ… ํ•œ ์ผ

  • 4์ฐจ ๊ณผ์ œ ๋ฆฌํŒฉํ† ๋ง : ๋ฐฐ์†ก๋น„ ๊ฒฐ์ œ ๋กœ์ง ์ˆ˜์ •

 

์ถ”๊ฐ€ ๊ธฐ๋Šฅ ์„ ๋ณ„ ํšŒ์˜ ํ›„ mutation ์ด ์™œ ์•ˆ๋˜๋Š”์ง€ ๋ฌผ์–ด ๋ดค๋‹ค

ํŒ€์›๋ถ„๋“ค์ด๋ž‘ ์—ฌ๋Ÿฌ ๊ฒฝ์šฐ๋ฅผ ์‹คํ–‰ํ•ด๋ณด๋‹ˆ 3๊ฐœ์˜ ์ธ์ž๋ฅผ ๋„ฃ์—ˆ์„ ๋•Œ ์ฒซ๋ฒˆ์งธ ์ธ์ž๋งŒ ์ฝ˜์†”์— ์ถœ๋ ฅ๋˜๊ณ  ๋‚˜๋จธ์ง€๋Š” undefined ๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ํ˜น์‹œ ์ธ์ž๋ฅผ ํ•˜๋‚˜๋งŒ ๋„ฃ์–ด์•ผ ํ•˜๋‚˜? ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค

๊ทธ๋ž˜์„œ payload ๋ผ๋Š” ๊ฐ์ฒด ๋ฐ์ดํ„ฐ์— ์ธ์ž ์„ธ๊ฐœ๋ฅผ ๋„ฃ์–ด์„œ payload ๋ฅผ ์ธ์ž๋กœ ๋„ฃ์–ด์คฌ๋”๋‹ˆ ์ œ๋Œ€๋กœ ์ž‘๋™์„ ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค

๊ทผ๋ฐ ์ด์ œ๋Š” ๊ฐ์ฒด์— ๋“ค์–ด๊ฐ€๋Š” id ๊ฐ’์ด ์—ฌ๋Ÿฌ ๊ฐœ๋ผ์„œ ๊ณ„์† ๋ฐ”๊ฟ”์„œ ์ ์šฉ์‹œํ‚ค๊ฑฐ๋‚˜ ๊ทธ ์•ˆ์—์„œ ์กฐ์ ˆ์„ ํ•ด์คฌ์–ด์•ผ ํ–ˆ๋‹ค

๊ทธ๋ž˜์„œ ๋ฐ–์—์„œ id ๋ฅผ ๋นˆ string ์œผ๋กœ ์ง€์ •ํ•ด์ค€ ๋’ค ์ƒํ’ˆ๋“ค์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ๊ฒฐ์ œํ•  ๋•Œ ์ƒํ’ˆ id ๋ฅผ ๋งค๋ฒˆ ์ง€์ •ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ณ€๊ฒฝํ–ˆ๋‹ค

 

 

 

 

 

 

 

 

1/10

๐Ÿ“ ํ•  ์ผ

  • ์›Œํฌ์ƒต ์ž๋ฃŒ ์ œ์ž‘
  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 1์ผ์ฐจ
  • 4์ฐจ ๊ณผ์ œ ๋ฆฌํŒฉํ† ๋ง : ๋ฐฐ์†ก๋น„ ๊ฒฐ์ œ ๋กœ์ง ์ˆ˜์ •

 

โœ… ํ•œ ์ผ

  • ์›Œํฌ์ƒต ์ž๋ฃŒ ์ œ์ž‘

๋ชฉ์š”์ผ์— ๊ทธ๋ฃน ์›Œํฌ์ƒต์ด ์žˆ์–ด์„œ ์›Œํฌ์ƒต ์ž๋ฃŒ๋ฅผ ์ œ์ž‘ํ–ˆ๋‹ค

๊ท€์ฐฎ๊ณ  ๋ฐœํ‘œ๋„ ํ•˜๊ธฐ ์‹ซ์—ˆ์ง€๋งŒ ์šฐ์งœ๊ฒ ๋‚˜ ํ•ด์•ผ์ง€..

๊ทธ๋ž˜๋„ ์ข€ ์ต์ˆ™ํ•ด์กŒ๋‹ค๊ณ  ์ž๋ฃŒ๋„ ํ›„๋‹ค๋‹ฅ ์ œ์ž‘ํ•˜๊ณ  ๋ฐœํ‘œ๋„ ์ข€ ๊ดœ์ฐฎ์•„์กŒ๋‹ค

 

 

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 1์ผ์ฐจ

 

ํŒ€์› ์ค‘ ๊ฑฐ์˜ ๊ฐ•์‚ฌ๋‹˜์ฒ˜๋Ÿผ ํ•ด์ฃผ์‹œ๋Š” ๋ถ„์ด ์žˆ๋Š”๋ฐ ์šฐ๋ฆฌ๊ฐ€ ์ข€ ํ•ด์ดํ•ด์ง„ ๊ฒƒ ๊ฐ™๋‹ค๊ตฌ ๋งค์ผ๋งค์ผ ๋ฆฌ์•กํŠธ ๊ณผ์ œ๋ฅผ ๋‚ด์ฃผ์‹œ๊ธฐ๋กœ ํ–ˆ๋‹ค

๋ณธ์ธ ๊ณต๋ถ€ํ•˜๋Š” ๊ฒƒ๋„ ๋ฐ”์˜๊ณ  ํž˜๋“œ์‹คํ…๋ฐ ์šฐ๋ฆฌ๋“ค ๊ฒƒ๋„ ๋ด์ฃผ์‹œ๋‹ค๋‹ˆ ๊ณ ๋ง™๊ณ  ๋ฏธ์•ˆํ•  ๋”ฐ๋ฆ„์ด์—ˆ๋‹ค..

์ฒซ ๊ณผ์ œ๋Š” router ์ œ์ž‘์ด์—ˆ๋Š”๋ฐ ์ตœ์‹  ๋ฒ„์ „์˜ createBrowserRouter ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ˆ™์ œ๋ฅผ ์ œ์ถœํ•˜๋Š” ๊ฑฐ์˜€๋‹ค

์ฒซ ๊ณผ์ œ๋‹ค๋ณด๋‹ˆ ๊ทธ๋ ‡๊ฒŒ ์–ด๋ ต์ง„ ์•Š์•˜๋‹ค

 

 

  • 4์ฐจ ๊ณผ์ œ ๋ฆฌํŒฉํ† ๋ง : ๋ฐฐ์†ก๋น„ ๊ฒฐ์ œ ๋กœ์ง ์ˆ˜์ •

์ด์ œ for ๋ฌธ์ด ๋๋‚˜๋ฉด ์™„๋ฃŒ alert ์ฐฝ๊ณผ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋‚ด ์ƒํ’ˆ๋“ค์„ ๋‹ค ์‚ญ์ œํ•ด์ฃผ๋Š” ๊ฑธ ํ•ด๊ฒฐํ•˜๋Š” ๊ณผ์ •์—์„œ ๊ฐ‘์ž๊ธฐ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— length error ๊ฐ€ ๋‚˜์„œ ๋ชป ํ•˜๊ฒŒ ๋๋‹ค

์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋กœ์ง ๋งก์€ ๋ถ„ํ•œํ…Œ ๋‚ด์ผ ํ•™์›๊ฐ€์„œ ๋ฌผ์–ด๋ด์•ผ๊ฒ ๋‹ค

 

 

 

 

 

 

1/11

๐Ÿ“ ํ•  ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 2์ผ์ฐจ
  • 4์ฐจ ๊ณผ์ œ ๋ฆฌํŒฉํ† ๋ง : ๋ฐฐ์†ก๋น„ ๊ฒฐ์ œ ๋กœ์ง ์ˆ˜์ • ์ฐ์ฐ๋งˆ๋ฌด๋ฆฌ

 

โœ… ํ•œ ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 2์ผ์ฐจ

2์ผ์ฐจ๋Š” state ๋กœ ๋ชจ๋‹ฌ์ฐฝ์„ ๋„์›Œ์ฃผ๋Š” ์ž‘์—…์„ ํ•˜๋Š” ๊ณผ์ œ์˜€๋‹ค

์˜ˆ์ „์— ์ฒ˜์Œ์— ๋ชจ๋‹ฌ์ฐฝ ์ž‘์—…ํ•  ๋•Œ๋Š” ์ดํ•ด๋„ ๋ชปํ•˜๊ณ  ๊ทธ๋ƒฅ ๋ณต๋ถ™๋งŒ ํ–ˆ์—ˆ๋Š”๋ฐ ์ง€๊ธˆ์€ ๋‚˜ ํ˜ผ์ž ๋ณต๋ถ™๋„ ์•ˆํ•˜๊ณ  ์ฒ™์ฒ™ ๋งŒ๋“œ๋Š” ๊ฒŒ ๋„ˆ๋ฌด ์‹ ๊ธฐํ•˜๊ณ  ๋ฟŒ๋“ฏํ–ˆ๋‹ค

๊ณต๋ถ€๋„ ๋งŽ์ด ๋ชปํ•˜๊ณ  ์„ฑ์žฅํ•˜๋Š”๊ฑด์ง€ ๋ˆˆ์— ๋ณด์ด์ง€ ์•Š์•„์„œ ์ง€์น  ๋•Œ๊ฐ€ ๋งŽ์€๋ฐ ์ด๋ ‡๊ฒŒ ์˜ˆ์ „๊ณผ ๋‹ฌ๋ผ์ง„ ๊ฑธ ๋ณผ ๋•Œ๋ฉด ๋„ˆ๋ฌด ์‹ ๊ธฐํ•œ ์ผ์ด๋‹ค

 

 

  • 4์ฐจ ๊ณผ์ œ ๋ฆฌํŒฉํ† ๋ง : ๋ฐฐ์†ก๋น„ ๊ฒฐ์ œ ๋กœ์ง ์ˆ˜์ • ์ฐ์ฐ๋งˆ๋ฌด๋ฆฌ

๋‹ค๋ฅธ ํŒ€์›ํ•œํ…Œ๋„ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋“ค์–ด๊ฐ€๋ณด๋ผ๊ณ  ํ–ˆ๋Š”๋ฐ length ์—๋Ÿฌ ๋‚˜์„œ ํ˜น์‹œ firebase ๊ณ„์ •์„ ๋ฐ”๊ฟจ๋Š”๋ฐ ๊ทธ๊ฒŒ ๋ฌธ์ œ์ธ๊ฐ€ ์‹ถ์–ด์„œ env ํŒŒ์ผ ๊ณ ์ณ๋ดค๋Š”๋ฐ๋„ ์•ˆ๋๋‹ค

server ๋ˆ ๋’ค ๋‹ค์‹œ ์ผœ๋ดค๋”๋‹ˆ ๋œ๋‹ค ์–ด์ด์—†๋„ค

 

 

๊ฒฐ์ œ ๋กœ์ง : ๋ฐฐ์†ก๋น„ ์ƒํ’ˆ ์ˆ˜์ • & useMutation ๋ฆฌํŒฉํ† ๋ง

for ๋ฌธ์ด ๋๋‚˜๋Š” ์†๋„์™€ ๋น„๋™๊ธฐ ํ•จ์ˆ˜๊ฐ€ ๋๋‚˜๋Š” ์†๋„๊ฐ€ ๋‹ฌ๋ผ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๊ฐ€ ๋‹ค ๋๋‚˜์ง€ ์•Š์•˜๋Š”๋ฐ๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๊ฒฐ์ œ ์™„๋ฃŒ alert ์ฐฝ๊ณผ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์ƒํ’ˆ ์‚ญ์ œ ์ฝ”๋“œ๊ฐ€ ์ฒ˜๋ฆฌ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค

๋ญ” ๋‚œ๋ฆฌ๋ฅผ ์ณ๋„ for ๋ฌธ ์•ˆ์— api ํ˜ธ์ถœ์ด ๋‹ค ๋๋‚˜์ง€ ์•Š์•˜๋Š”๋ฐ๋„ ๊ฒฐ์ œ ์•ˆ๋‚ด alert ์ฐฝ๊ณผ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์‚ญ์ œ ๋กœ์ง์ด ๋ฐœ๋™๋˜์–ด์„œ ๋™๋™ ์•“๋‹ค๊ฐ€ ๊ฐ•์‚ฌ๋‹˜ํ•œํ…Œ ๋ฌผ์–ด๋ดค๋‹ค

โฌ† ๊ฐ•์‚ฌ๋‹˜์ด ํ•ด๊ฒฐํ•ด์ฃผ์‹  ์ฝ”๋“œ(๋ญ”๊ฐ€ ๋‚˜์˜ ๋’ค์ฃฝ๋ฐ•์ฃฝ ๋กœ์ง์— ๋งž์ถฐ ํ•ด๊ฒฐํ•ด์ค€๊ฑฐ๋ผ ์ซŒ ์ฐ์ฐ์“ฐ…)

๊ฐ•์‚ฌ๋‹˜ํ•œํ…Œ ์—ฌ์ญค๋ณด๊ณ  ํ•ด๊ฒฐ๋œ ์ค„ ์•Œ์•˜๋”๋‹ˆ ์ง‘์— ์™€์„œ ๋ณด๋‹ˆ๊นŒ ๋‹ค์‹œ ์ค‘๊ฐ„์— console.log('๋') ์ด ์ฐํžˆ๋”๋ผ..

useMutation ํŒŒ๋ผํ”ผํ„ฐ๋ฅผ ํ•œ ๊ฐœ๋งŒ ๋ฐ›์•„์˜ค๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋ฐฐ์—ด๋กœ ๋ฐ›์•„์˜ค๋‹ˆ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค

์ธ์ž ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋‹ˆ ๋™์‹œ์— ๊ฐ api ํ˜ธ์ถœ์— ๋Œ€ํ•ด mutateAsync ๋กœ await ๋ฅผ ํ•ด์ฃผ๋‹ˆ api ํ˜ธ์ถœ ๋ฌธ์ œ๋„ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค

 

์ฐธ๊ณ  ๋ฌธํ—Œhttps://oyg0420.tistory.com/entry/React-Query-%EC%98%88%EC%A0%9C%EB%A1%9C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0

https://itchallenger.tistory.com/587

 

 

 

 

 

 

1/12

๐Ÿ“ ํ•  ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 3์ผ์ฐจ
  • ๋ฐฑ์ค€ ๋‹จ๊ณ„๋ณ„ ๋ฌธ์ œ ํ•˜๋‚˜๋ผ๋„ ํ’€๊ธฐ
  • ๋…ธ๋งˆ๋“œ ์ฝ”๋” ๋ฆฌ์•กํŠธ ๋งˆ์Šคํ„ฐ crypto tracker 1 ์‹ค์Šต
  • ๊ฐœ๋ฐœ ๋ธ”๋กœ๊ทธ ์ •๋ฆฌ & ์ž‘์„ฑ

 

โœ… ํ•œ ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 3์ผ์ฐจ

์ด๋ฒˆ ๊ณผ์ œ๋Š” ๊ธฐ์กด์— css ๋กœ ์ž‘์—…ํ–ˆ๋˜ ๊ฒƒ์„ styled-components ๋กœ ๋ฆฌํŒฉํ† ๋ง ์ž‘์—…์„ ํ•ด๋ณด๋Š” ๊ฒƒ์ด์—ˆ๋‹ค

์š”์ƒˆ ๋ฆฌ์•กํŠธ ๋…ธ๋งˆ๋“œ ์ฝ”๋” ๋•๋ถ„์— ์Šคํƒ€์ผ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•ด์„œ ์–ด๋ ต์ง„ ์•Š์•˜๋‹ค

๊ทธ๋ฆฌ๊ณ  ์ƒ์†์ด๋‚˜ ํ™•์žฅ ๋“ฑ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ์“ฐ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ„๋‹จํ–ˆ๋‹ค

 

 

attr ์†์„ฑ ์•ˆ์— ๋„ฃ์„ img ๋ฐฉ๋ฒ•์œผ๋กœ public ํด๋”์— ์žˆ๋Š” image ํŒŒ์ผ์„ import ํ•ด์„œ ๋„ฃ์œผ๋ ค๋‹ค๊ฐ€ ๊ฐ‘์ž๊ธฐ ์ ˆ๋Œ€๊ฒฝ๋กœ๋กœ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ฐฉ๋ฒ•์ด ์•ˆ๋˜๊ธธ๋ž˜ ํ•ด๋‹น ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ src ๋กœ ๊ฐ€์ ธ์™”๋‹ค๊ฐ€ ๊ทธ๊ฒƒ๋„ ์•ˆ ๋จน์—ˆ๋‹ค

๊ทธ๋ž˜์„œ ๊ทธ๋ƒฅ attr src ์— '/logo192.png' ๋ฅผ ํ•ด์คฌ๋”๋‹ˆ ๊ทธ๋ƒฅ ๋ฐ”๋กœ ํ•ด๊ฒฐ๋๋‹ค^^ ์–ด์ด์—†๋‹ค ์ฆ๋ง

๊ทผ๋ฐ ์ ˆ๋Œ€ ๊ฒฝ๋กœ์— ์žˆ๋Š” ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ import ํ•˜๋ ค๋ฉด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ํ•˜๋”๋ผ ๋‚˜์ค‘์— ์ด๋Ÿฐ ์ผ์ด ์ƒ๊ธฐ์ง€ ์•Š์•˜์œผ๋ฉด ์ข‹๊ฒ ๋‹ค

 

 

  • ๋ฐฑ์ค€ ๋‹จ๊ณ„๋ณ„ ๋ฌธ์ œ ํ•˜๋‚˜๋ผ๋„ ํ’€๊ธฐ
let filePath = process.platform === "linux" ? 0 : "./input.txt";
let input = require("fs").readFileSync(filePath).toString();
input = Number(input);

let num = input;
let i = 0;

while (true) {
  let sum = Math.floor(num / 10) + (num % 10);
  num = (num % 10) * 10 + (sum % 10);
  i++;
  if (input === num) break;
}

console.log(i);

์š”์ƒˆ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ•˜๋‚˜๋„ ํ’€์ง€ ์•Š์•„์„œ ์ข€ ๋ถˆ์•ˆํ•œ ๋งˆ์Œ์— ์‹œ๊ฐ„ ์žˆ์„ ๋•Œ ํ•˜๋‚˜๋ผ๋„ ํ’€์ž๋ผ๋Š” ์‹ฌ์ •์œผ๋กœ ์‹œ์ž‘ํ–ˆ๋‹ค

์•„๋งˆ ๋ฐ”๋น ์„œ ์ผ์ฃผ์ผ์— ํ•œ ๋ฌธ์ œ ํ’€๊นŒ๋ง๊นŒ ํ•˜๊ฒ ์ง€๋งŒ ํ‹ฐ๋Œ๋ชจ์•„ ํƒœ์‚ฐ์ด๊ณ  ์•ˆํ•˜๋Š” ๊ฒƒ๋ณด๋‹จ ๋‚ซ๊ฒ ์ง€ ์‹ถ๋‹ค

๊ทผ๋ฐ ์˜ค๋žœ๋งŒ์— ํ‘ธ๋‹ˆ๊นŒ ํ•˜๋‚˜๋„ ๋ชจ๋ฅด๊ฒ ๋‹ค..

1110๋ฒˆ ๋”ํ•˜๊ธฐ ์‚ฌ์ดํด ๋ฌธ์ œ์ธ๋ฐ ๋จธ๋ฆฌ๋ก  ์ดํ•ดํ–ˆ๊ณ  ์–ด๋–ป๊ฒŒ ํ’€์ง€๋Š” ์•Œ ๊ฒƒ ๊ฐ™์€๋ฐ ๋กœ์ง์„ ๋ง‰์ƒ ์‹คํ–‰ํ•ด๋ณด๋ฉด ์›ํ•˜๋Š”๋Œ€๋กœ ๋‚˜์˜ค์ง€ ์•Š์•„ ๋‹ต๋‹ตํ•˜๋‹ค

์ผ๋‹จ ์œ„ ๋‹ต์€ ๊ตฌ๊ธ€๋งํ•ด์„œ ํ‘ผ ๋ฌธ์ œ๊ณ ์š”^^..

 

ํ•ด์„ค :

์ฃผ์–ด์ง„ ์ˆ˜์—์„œ ์‹ญ์˜ ์ž๋ฆฌ์™€ ์ผ์˜ ์ž๋ฆฌ์ˆ˜๋ฅผ ๊ตฌํ•ด ๋”ํ•˜๊ณ 

์ƒˆ๋กœ์šด ์ˆ˜์˜ ์‹ญ์˜ ์ž๋ฆฌ๋Š” ์ฃผ์–ด์ง„ ์ˆ˜์—์„œ ์ผ์˜ ์ž๋ฆฌ์ˆ˜(์ผ์˜ ์ž๋ฆฌ์— 10 ๊ณฑํ•ด์„œ ์‹ญ์˜ ์ž๋ฆฌ ๋งŒ๋“ค๊ธฐ)

์ƒˆ๋กœ์šด ์ˆ˜์˜ ์ผ์˜ ์ž๋ฆฌ๋Š” ์ฃผ์–ด์ง„ ์ˆ˜๋ฅผ ๋”ํ•œ ๊ฐ’์˜ ์ผ์˜ ์ž๋ฆฌ

์ฃผ์–ด์ง„ ์ˆ˜๊ฐ€ ์ƒˆ๋กœ์šด ์ˆ˜์™€ ๊ฐ™์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต

 

 

 

  • ๋…ธ๋งˆ๋“œ ์ฝ”๋” ๋ฆฌ์•กํŠธ ๋งˆ์Šคํ„ฐ crypto tracker 1 ์‹ค์Šต

์ด์ œ ์ฐจํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ ์šฉํ•˜์—ฌ ์ฝ”์ธ ์‹œ์„ธ๋ฅผ ์ฐจํŠธ ํ˜•ํƒœ๋กœ ๋ณด์ด๊ฒŒ ํ•˜๋Š” ๊ฒƒ๊นŒ์ง€ ํ•ด๋ณด๋ ค๊ณ  ํ•˜๋Š”๋ฐ ๋ญ” ์—๋Ÿฌ๊ฐ€ ์ €๋ ‡๊ฒŒ ๋‚˜์š”;; ๋„ˆ๋ฌด ๋‹นํ™ฉํ–ˆ๋‹ค

์˜ค๋ฅ˜๋ฅผ ๋ฒˆ์—ญ๋„ ํ•ด๋ณด๊ณ  ๊ตฌ๊ธ€๋ง๋„ ํ•ด๋ณด๊ณ  ๋ช‡ ์‹œ๊ฐ„์„ ๋Œ€๊ฐ€๋ฆฌ๋ฅผ ์‹ธ๋งค๋ฉฐ ์•Œ์•„๋ณธ ๊ฑธ๋กœ๋Š” ์ฝ”์ธํŒŒํ”„๋ฆฌ์นด์—์„œ ์ œ๊ณตํ•ด์ฃผ๋Š” api ์˜ ๋ฌด๋ฃŒ ํ”Œ๋žœ์€ ์ง€๋‚œ 24์‹œ๊ฐ„๋งŒ ๋ฐ˜์˜ํ•ด์ค€๋‹ค๊ณ  ํ•œ๋‹ค

 

๊ทธ๋ž˜์„œ ์‹œ๊ฐ„์„ 23์‹œ๊ฐ„์œผ๋กœ ๊ณ ์ณค๋”๋‹ˆ ์ž‘๋™์„ ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค

์•„ ์™œ ๊ฐ‘์ž๊ธฐ ํ”Œ๋žœ์ด ์ƒ๊ธฐ๋ƒ๊ณ ์š”~~~~ ์ฝ”์ธ ํŒŒํ”„๋ฆฌ์นด ์š” ์ชผ์ž”ํ•œ ๋„˜๋“ค

 

 

  • ๊ฐœ๋ฐœ ๋ธ”๋กœ๊ทธ ์ •๋ฆฌ & ์ž‘์„ฑ

4์ฐจ๊ณผ์ œ ํ•˜๋А๋ผ ์—๋Ÿฌ๊ฐ€ ๋งŽ์ด ๋‚˜์„œ ๋•๋ถ„์— ๊ฐœ๋ฐœ ๋ธ”๋กœ๊ทธ์— ์ •๋ฆฌํ•  ๊ฒƒ๋„ ๋งŽ์•˜๋‹ค^^

์ปจํ…์ธ ๊ฐ€ ๋งŽ์€ ๊ฑด ์ข‹์ง€๋งŒ ๋„ˆ๋ฌด ์ •๋ฆฌํ•˜๊ธฐ๊ฐ€ ํž˜๋“ค๋‹ค^^

๋ญ ์ด๋Ÿฐ ๊ฒƒ๋„ ๋‚˜์ค‘์— ๋„์›€์ด ๋‹ค ๋˜๊ฒ ์ง€ใ…Žใ…Ž

 

 

 

 

 

 

1/13

๐Ÿ“ ํ•  ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 4์ผ์ฐจ
  • ๋…ธ๋งˆ๋“œ ์ฝ”๋” ๋ฆฌ์•กํŠธ ๋งˆ์Šคํ„ฐ crypto tracker 2 ์‹ค์Šต
  • 4์ฐจ๊ณผ์ œ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ์‹œ์ž‘

 

โœ… ํ•œ ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 4์ผ์ฐจ

์˜ค๋Š˜์€ ๊ฐ์ฒด ๋ฐ์ดํ„ฐ์˜ ํƒ€์ž…์„ ์ง€์ •ํ•ด๋ณด๊ณ  ํ’ˆ์ ˆ์ด ์•„๋‹Œ ์ƒํ’ˆ๋“ค๋งŒ ์ถœ๋ ฅ๋˜๋„๋ก ๋งŒ๋“ค์–ด์คฌ๋‹ค

interface ๋Š” ์ง€๊ฒน๋„๋ก ๋งŒ๋“ค์–ด์ค˜์„œ ๊ทธ๋ ‡๊ฒŒ ์–ด๋ ต์ง„ ์•Š์•˜๋‹ค

 

 

  • ๋…ธ๋งˆ๋“œ ์ฝ”๋” ๋ฆฌ์•กํŠธ ๋งˆ์Šคํ„ฐ crypto tracker 2 ์‹ค์Šต

ํ•™์›์— ๋‚˜์™€ ํ•ด๋‹น ๊ฐ•์˜๋“ค์„ ๊ฐ™์ด ์ˆ˜๊ฐ•ํ•˜๊ณ  ์žˆ๋Š” ํŒ€์›๋“ค์—๊ฒŒ ์ง€๋‚œ 24์‹œ๊ฐ„๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋ฌผ์–ด๋ดค๋”๋‹ˆ ๋‹ˆ๊ผฌ์Œค์ด ๋งŒ๋“  ๋‹ค๋ฅธ api ๋ฅผ ๋ถ€๋ฅด๋ฉด ๋œ๋‹ค๊ณ  ํ•ด์„œ ํ•ด๊ฒฐ๋๋‹คใ…Ž..

 

๊ทธ๋ฆฌ๊ณ  data ์ชฝ์— ๋‚ฌ๋˜ ์—๋Ÿฌ๋“ค์€ ํƒ€์ž…์„ ์ง€์ •ํ•ด์ฃผ์ง€ ์•Š์•„ ์ƒ๊ธด ์˜ค๋ฅ˜๊ฐ™๋‹ค

map ์œผ๋กœ ๋Œ๋ฆฐ ๋์— as any ๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๋‹ˆ ํ•ด๊ฒฐ๋๋‹ค

 

 

๊ทธ๋ฆฌ๊ณ  ๋‹ˆ๊ผฌ์Œค์ด ์ถ”๊ฐ€๋กœ ๋‚ด์ฃผ์‹  ์ˆ™์ œ๋Š” price ํŽ˜์ด์ง€ ์ •๋ณด ๋ณด์—ฌ์ฃผ๊ธฐ, ์บ”๋“ค์Šคํ‹ฑ ์ฐจํŠธ๋กœ ๋ฐ”๊ฟ”๋ณด๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ๋‹ค

 

 

 

  • 4์ฐจ๊ณผ์ œ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ์‹œ์ž‘(์ฐ๋จน)

์ฐจํŠธ ๋ฌธ์ œ ํ•ด๊ฒฐํ•˜๋А๋ผ ๋ฐฐ์†ก์ง€์ฃผ์†Œ ์ €์žฅ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์— ์“ธ ๋“œ๋ฆผ์ฝ”๋”ฉ firebase ์„ค์น˜ ๊ฐ•์˜ ๋ณธ ๊ฒƒ ๋นผ๊ตฌ ์•”๊ฒƒ๋‘ ๋ชปํ•จใ…Ž

 

 

 

 

 

 

 

1/14

๐Ÿ“ ํ•  ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 5์ผ์ฐจ

 

โœ… ํ•œ ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 5์ผ์ฐจ

ํ‰์†Œ๊ฐ™์•˜์Œ ํ† ์š”์ผ์€ ํ•ญ์ƒ ์‰ฌ๋Š”๋ฐ ๊ณผ์ œ๋•๋ถ„์— ๊ณต๋ถ€๋ฅผ ํ•˜๊ฒŒ ๋˜์–ด์„œ ์ข€ ๋ฟŒ๋“ฏ..ใ…Ž

์˜ค๋Š˜์€ class ๋ฅผ ์ด์šฉํ•ด์„œ ์ธ์Šคํ„ด์Šค๋กœ ๋น„์Šทํ•œ ๊ตฌ์กฐ์˜ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋“ค์„ ์ƒ์„ฑํ•˜๊ณ  ํ™”๋ฉด์— ์ถœ๋ ฅํ•ด์ฃผ๋Š” ๊ณผ์ œ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ๋‹ค

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

class ๋ฅผ ๋‹ค์‹œ ํ•œ๋ฒˆ ๋ด์•ผ๊ฒ ๋‹คใ… 

 

 

 

 

 

 

 

1/15

๐Ÿ“ ํ•  ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 6์ผ์ฐจ
  • 4์ฐจ ๊ณผ์ œ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ : ๊ทธ๋ฆฌ๋“œ ์ •๋ ฌ ์‹œ์ž‘!

 

โœ… ํ•œ ์ผ

  • ๋ฆฌ์•กํŠธ ๊ณผ์ œ 6์ผ์ฐจ

์˜ค๋Š˜์€ framer-motion ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๊ฐ„๋‹จํ•œ ์Šฌ๋ผ์ด๋” ๋งŒ๋“ค๊ธฐ ๊ณผ์ œ๋ฅผ ํ–ˆ๋‹ค

์ด๋ฒˆ์—” ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ณต๋ถ€๋ฅผ ์œ„ํ•ด ๋…ธ๋งˆ๋“œ์ฝ”๋”์˜ ๊ฐ•์˜๋ฅผ ์ฒจ๋ถ€ํ•ด์ฃผ์…จ๋‹ค

๊ฐ•์˜๋ฅผ ๋ณด๊ณ  ๋”ฐ๋ผ์น˜์ง€ ์•Š๊ณ  ๊ทธ๋ƒฅ ํ•œ๋ฒˆ ์ญ‰ ๋ณธ ๋’ค ํ˜ผ์ž ์ž‘์„ฑํ•ด๋ดค๋‹ค

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋ณต์žกํ•œ ๋กœ์ง์˜ ๊ธฐ๋Šฅ๋“ค์„ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค˜์„œ ์ข‹์ง€๋งŒ ๋‚ด๊ฐ€ ํ•˜๋“œ์ฝ”๋”ฉ์œผ๋กœ ๋กœ์ง์„ ์งœ์„œ ๋งŒ๋“ค์–ด๋ณด๋ผ๊ณ  ํ•˜๋ฉด ๋ชปํ•  ๊ฒƒ ๊ฐ™๋‹ค

๋ญ”๊ฐ€ ๋„ˆ๋ฌด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์˜์กดํ•˜๋Š” ๊ฑด์ง€ ๊ฑฑ์ •๋  ๋•Œ๋„ ๋งŽ๋‹ค

 

 

๊ตฌํ˜„ํ•˜๋‹ค๋ณด๋‹ˆ ๋‹ˆ๊ผฌ์Œค๊ณผ ๋‹ค๋ฅด๊ฒŒ ์ด์ „ ๋ฒ„ํŠผ ๋ˆ„๋ฅด๋‹ค๊ฐ€ ๋‹ค์Œ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ํ˜„์žฌ ๋ฐ•์Šค๊ฐ€ ์™ผ์ชฝ์œผ๋กœ ๊ฐ€๊ณ  ๋‹ค์Œ ๋ฐ•์Šค๊ฐ€ ์˜ค๋ฅธ์ชฝ์—์„œ ์˜ค๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ํ˜„์žฌ ๋ฐ•์Šค๊ฐ€ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๊ฐ€๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ•œ๋‹ค

๋‹ˆ๊ผฌ์Œค ์ฝ”๋“œ์™€ ๋˜‘๊ฐ™์ด ํ–ˆ๋Š”๋ฐ๋„ ๊ณ ์ณ์ง€์ง€๊ฐ€ ์•Š์•˜๋‹ค

๊ทธ๋ž˜์„œ ๊ณผ์ œ๋ฅผ ๋‚ด์ฃผ์‹  ๋ถ„ํ•œํ…Œ๋„ pr ํ•˜๋ฉด์„œ ๋ฌผ์–ด๋ณด๊ณ  ๋‹ค๋ฅธ ํŒ€์›ํ•œํ…Œ๋„ ๋ฌผ์–ด๋ดค๋Š”๋ฐ ๋‚ด์ฃผ์‹  ๋ถ„๋„ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค๊ณ  ํ•˜์‹œ๊ตฌ ๋‹ค๋ฅธ ํŒ€์›๋„ ๋˜‘ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ด์„œ ๋ญ๋•Œ๋ฌธ์ธ์ง€ ๋ชจ๋ฅด๊ฒ ๋‹คใ… 

ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ–ˆ์œผ๋‹ˆ ๊ฐ•์‚ฌ๋‹˜๊ป˜ ์—ฌ์ญค๋ด์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค

 

 

  • 4์ฐจ ๊ณผ์ œ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ : ๊ทธ๋ฆฌ๋“œ ์ •๋ ฌ ์‹œ์ž‘!

๋“œ๋””์–ด ๋ฆฌํŒฉํ† ๋ง๋„ ๋๋‚˜๊ณ  ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋˜ ๋…ธ๋งˆ๋“œ ์ฝ”๋”๋„ ๋งˆ๋ฌด๋ฆฌ๊ฐ€ ๋˜์–ด์„œ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ์ค‘ ๊ฐ€์žฅ ์‰ฌ์šด ๊ฒƒ๋ถ€ํ„ฐ ์‹œ์ž‘ํ–ˆ๋‹ค

๊ทธ๋ฆฌ๋“œ ์ •๋ ฌ์€ ๋ญ”๊ฐ€ ํ›…๋„ ์จ์•ผํ•  ๊ฒƒ ๊ฐ™๊ณ  ์ปดํฌ๋„ŒํŠธ๋„ ๋งŽ์ด ๋‚˜๋ˆ ์•ผ ํ•  ๊ฒƒ ๊ฐ™์•„์„œ ์ผ๋‹จ ๊ธฐ๋Šฅ ๊ตฌํ˜„์ด ๋˜๋„๋ก ํ•˜๋“œ์ฝ”๋”ฉ์œผ๋กœ ์Šคํƒ€์ผ๋ง์„ ์ œ์™ธํ•˜๊ณ  ๊ธฐ๋Šฅ๊ตฌํ˜„์„ ๋จผ์ € ์™„๋ฃŒํ–ˆ๋‹ค

ํ•ด๋‹น ๊ธฐ๋Šฅ์€ ๋‚ด๊ฐ€ ๊ตฌํ˜„ํ•œ ๊ฒ€์ƒ‰ ํŽ˜์ด์ง€์™€ ๋‹ค๋ฅธ ๋ถ„์ด ๊ตฌํ˜„ํ•œ ์นดํ…Œ๊ณ ๋ฆฌ ํŽ˜์ด์ง€์— ๋„ฃ์–ด์•ผ ํ•˜๋Š” ๊ฑฐ๋ผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์‹ ๊ฒฝ์„ ์จ์•ผ ํ–ˆ๋Š”๋ฐ ์ฝ”๋“œ๊ฐ€ 3์ค„๋ฐ–์— ๋˜์ง€ ์•Š์•„ ํ›…์œผ๋กœ ๋งŒ๋“ค๋งŒ ํ•œ ๋ถ€๋ถ„์ด ์•„๋‹ˆ๋ผ์„œ ์ด๊ฑธ ํ›…์œผ๋กœ ๋งŒ๋“ค์–ด์•ผ ํ• ์ง€์— ๋Œ€ํ•œ ๊ณ ๋ฏผ๋„ ์ƒ๊ฒผ๋‹ค

๊ทธ๋ฆฌ๊ณ  ์ƒ๊ฐํ•ด๋ณด๋‹ˆ ๊ทธ๋ฆฌ๋“œ๊ฐ€ ์Šคํƒ€์ผ๋ง๋งŒ ๋ฐ”๋€Œ๋Š” ๊ฒŒ ์•„๋‹ˆ๊ณ  ๊ตฌ์กฐ๊ฐ€ ์•„์˜ˆ ๋ฐ”๋€Œ๋Š” ๊ฑฐ๋ผ ๊ธฐ์กด์— ํ•˜๋‚˜์˜ ์ƒํ’ˆ์— ๋Œ€ํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์“ธ ์ˆ˜ ์žˆ์„์ง€์— ๋Œ€ํ•ด ๊ณ ๋ฏผ๋„ ๋งŽ์ด ์ƒ๊ฒผ๋‹ค

์ด ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ๋Š” ํŒ€์›ํ•œํ…Œ ์กฐ์–ธ์„ ๊ตฌํ•ด๋ด์•ผ ๊ฒ ๋‹ค

 

 

 

 

 

1/2

๐Ÿ“ ํ•  ์ผ

  • 4์ฐจ๊ณผ์ œ ์ฝ”๋“œ๋ฆฌ๋ทฐ ํ”ผ๋“œ๋ฐฑ ์ˆ˜์ • & ์ •๋ฆฌ

 

โœ… ํ•œ ์ผ

  • 4์ฐจ๊ณผ์ œ ์ฝ”๋“œ๋ฆฌ๋ทฐ ํ”ผ๋“œ๋ฐฑ ์ˆ˜์ • & ์ •๋ฆฌ

์ฝ”๋“œ๋ฆฌ๋ทฐ ๋Œ€ํ•œ ์งˆ๋ฌธ๊ณผ ๋ฆฌํŒฉํ† ๋ง ๊ณ„ํš์ด๋‚˜ ๊ธฐ๊ฐ„์— ๋Œ€ํ•œ ํšŒ์˜ ํ›„ ํ”ผ๋“œ๋ฐฑ ์ˆ˜์ •์„ ๋๋‚ด๊ณ  pr ํ•œ ๋’ค ์ด์Šˆ์— ์ •๋ฆฌํ–ˆ๋‹ค

์ˆ˜์ •์ด ์–ด๋ ค์šด ๊ฑด ์—†์—ˆ๋Š”๋ฐ ์งœ์ž˜ํ•˜๊ฒŒ ๊ท€์ฐฎ์€ ๊ฒŒ ๋งŽ์•„์„œ ์ˆ˜์ •ํ•˜๋Š” ๋ฐ๋„ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ณ  ์–ด๋–ป๊ฒŒ ๊ณ ์ณค๋Š”์ง€ ์ •๋ฆฌํ•˜๋Š” ๋ฐ๋„ ์‹œ๊ฐ„์ด ์ข€ ๊ฑธ๋ ธ๋‹ค

 

๊ทธ๋ฆฌ๊ณ  ์ˆ˜์ • ๋„์ค‘์— ์—๋Ÿฌ๊ฐ€ ์ƒ๊ฒจ์„œ ์‹œ๊ฐ„์ด ๋” ๊ฑธ๋ฆฐ ๊ฒƒ๋„ ์žˆ์—ˆ๋‹ค

๋กœ๊ทธ์ธ ํ›„ ์ฒ˜์Œ ๊ตฌ๋งคํ•˜๊ธฐ ๋“ค์–ด๊ฐ€๋ฉด length ์—๋Ÿฌ๊ฐ€ ๋‚˜๋Š” ์ƒํ™ฉ์ด์—ˆ๋‹ค

๊ณ„์ขŒ ์กฐํšŒ api ์ชฝ์—์„œ data ๋ฅผ ์ž˜ ๋ถˆ๋Ÿฌ์˜ค์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ ๊ฐ™์€๋ฐ ์ •ํ™•ํžˆ ์›์ธ์„ ์•Œ ์ˆ˜ ์—†์—ˆ๋‹ค

 

 

fetch ํ•จ์ˆ˜๋ฅผ ๋ชจ๋“ˆํ™”๋กœ ๋ถ„๋ฆฌํ•˜์ง€ ์•Š๊ณ  ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์—์„œ useEffect ๋กœ ๋ถˆ๋Ÿฌ์˜ค๋‹ˆ ์ž‘๋™์ด ๋˜๋Š” ๊ฒƒ์„ ๋ณด๋‹ˆ ๋ฐ์ดํ„ฐ๋ฅผ ์ž˜๋ชป ๋ณด๋‚ด๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์ง„ ์•Š์•˜๋‹ค

 

// ๊ณ„์ขŒ ์กฐํšŒ api
export const getAccountInfo = async ({ accessToken }) => {
  try {
    const res = await fetch(ACCOUNT_URL, {
      method: 'GET',
      headers: { ...HEADERS_USER, Authorization: accessToken },
    });
    const json = await res.json();
    return json;
  } catch (error) {
    console.error(error.message);
  }
};

๋‹ค๋ฅธ ํŒ€์›๊ณผ ํ•จ๊ป˜ ์ปดํฌ๋„ŒํŠธ ๋‚ด์—์„œ, fetch ํ•จ์ˆ˜ ์•ˆ์—์„œ console ์„ ์ฐ์–ด ๋ดค๋Š”๋ฐ accessToken ์ด undefined ๋กœ ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ์ปดํฌ๋„ŒํŠธ ๋‚ด์—์„œ ๋‹ค์‹œ accessToken ์„ ๋ฐ›์•„ ์ธ์ˆ˜๋กœ ๋„ฃ์–ด์ฃผ๋‹ˆ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค

๊ทผ๋ฐ ์ „๊นŒ์ง€๋Š” accessToken ์„ ์ž˜ ๋ฐ›์•„์˜ค๋‹ค๊ฐ€ ์™œ ๊ฐ‘์ž๊ธฐ ๋ชป ๋ฐ›์•„์˜ค๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค

 

 

length ์—๋Ÿฌ๋ฅผ ํ•ด๊ฒฐํ•˜๋‹ˆ ๊ฒฐ์ œ ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ๋‹ค^^

 

 

๋‹จ์ผ๊ณผ ๋‹ค์ค‘ ์ƒํ’ˆ ๊ตฌ๋งค ์‹œ id ์ด๋ฆ„์ด ๋‹ฌ๋ผ ์ƒ๊ธด ์˜ค๋ฅ˜๋กœ ๋กœ์ง์„ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ–ˆ์œผ๋‚˜ ์ฝ”๋“œ๊ฐ€ ๊ธธ์–ด์ ธ or ์—ฐ์‚ฐ์ž ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ–ˆ๋‹ค

 

์•„๋ž˜๋Š” ์ˆ˜์ • ์‚ฌํ•ญ์ธ๋ฐ ์ •๋ฆฌํ•ด๋†“์œผ๋‹ˆ ๋ฟŒ๋“ฏํ•˜๊ธฐ๋„ ํ–ˆ์ง€๋งŒ ์ƒ๊ฐ๋ณด๋‹ค ๋งŽ์•„์„œ ์ข€ ๋ถ€๋„๋Ÿฌ์› ๋‹ค

1. Account : accountColor ์Šคํƒ€์ผ ๋ถ€๋ถ„ ์ธ๋ผ์ธ์—์„œ ์™ธ๋ถ€๋กœ ์ˆ˜์ •

2. Header : search input react-hook-form ๋„์ž…ํ•ด๋‹น ๊ธฐ๋Šฅ์˜ ์žฅ์ ์„ ์‚ด๋ฆด ์ˆ˜ ์—†์„ ๊ฒƒ ๊ฐ™์•„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ ค ํ–ˆ์œผ๋‚˜ ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ๋„์ž…ํ•  ๋•Œ ์†๋„๋ฉด์—์„œ ๊ทน์ ์ธ ์ฐจ์ด๊ฐ€ ๋‚˜์„œ ๋„์ž…ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •

3. SearchItem : onClick ์ด๋ฒคํŠธ ํ•ธ๋“ค๋ง ํ•จ์ˆ˜ ๋ถ„๋ฆฌ, cur → prev ์ˆ˜์ •

4. MyBuy : ๊ฒฐ์ œ ๋ฒ„ํŠผ onClick ์ด๋ฒคํŠธ ํ•ธ๋“ค๋ง ํ•จ์ˆ˜์—์„œ ๋ฐฐ์†ก์ง€์ •๋ณด reload ๋ถ€๋ถ„ ์ œ๊ฑฐ

5. Account : onChange ์— ์ „๋‹ฌ๋˜๋Š” ํ•จ์ˆ˜์— ์ธ์ž๋กœ ๋„ฃ๋Š” bankName ์ œ๊ฑฐ

6. MyBuy : ์ˆ˜๋Ÿ‰ ๋ฐ์ดํ„ฐ ์—†๋Š” ๊ฒฝ์šฐ 1๋กœ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์ˆ˜์ •

7. Search :  useSearchParams ๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐฉ์‹ ์ˆ˜์ •

8. Search : ํ‚ค์›Œ๋“œ ๊ตฌ๋ถ„ ๋กœ์ง ๋ถ€๋ถ„ ์ˆ˜์ •, else ๋ฌธ์€ ํ•„์š” ์—†์–ด์„œ ์‚ญ์ œ

9. Search : API ํ˜ธ์ถœ ๋ฐฉ์‹์„ ๋กœ์ง ๋ถ„๋ฆฌ x, useQuery ๋กœ ์ˆ˜์ •ํ•˜์—ฌ ์ฒ˜๋ฆฌ ์†๋„ ์ฆ๊ฐ€

10. TotalProduct : error, loading ๋ถ€๋ถ„ if return ๋ฌธ์—์„œ ์ปดํฌ๋„ŒํŠธ return ๋ฌธ ์•ˆ์˜ ์‚ผํ•ญ์—ฐ์‚ฐ์ž๋กœ ์ฒ˜๋ฆฌ

11. Product : onClickDetail ํ•จ์ˆ˜ ์‚ญ์ œ

12. MyBuy : productsPrice ๋กœ์ง์—์„œ ๋ฐ˜๋ณต๋ฌธ ์•ˆ์˜ if else ๋Š” ์ƒ์„ธํŽ˜์ด์ง€์˜ ๊ตฌ๋งคํ•˜๊ธฐ ๊ฒฝ์šฐ quantity ๋ฐ์ดํ„ฐ๊ฐ€ undefined ๋˜์–ด ์ฒ˜๋ฆฌํ•ด์ค€ ๊ฒƒ์œผ๋กœ else ๋ฌธ ์ œ๊ฑฐํ•˜์ง€ ์•Š์•˜์Œ, while ๋ฌธ ์ œ๊ฑฐํ•˜์—ฌ productsPrice ์— ๋ˆ„์ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ˆ˜์ •

13. MyBuy : ๋ฐฐ์†ก์ง€์ •๋ณด form ์˜ ๋ณ€์ˆ˜๋ช…์€ ์ถ”ํ›„ ๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜๋ฉด์„œ ์ˆ˜์ • ์˜ˆ์ •

14. css : ํด๋ž˜์Šค๋„ค์ž„ ์ปจ๋ฒค์…˜์— ๋งž๊ฒŒ ์ˆ˜์ •. btn_heart → btnHeart

15. MyCart : ์žฅ๋ฐ”๊ตฌ๋‹ˆ์—์„œ ๊ตฌ๋งคํ•˜๊ธฐ๋กœ ๋„˜๊ฒจ์ฃผ๋Š” state ๋ณ€์ˆ˜๋ช…์ด ๋™์ผํ•˜๋„๋ก ์ˆ˜์ •. buyItem → buyProduct

16. loading : ๋กœ๋”ฉ ์‹œ LoadingModal ํ™œ์šฉ

 

 

 

 

 

 

 

1/3

๐Ÿ“ ํ•  ์ผ

  • 4์ฐจ๊ณผ์ œ ๋ฆฌํŒฉํ† ๋ง

 

โœ… ํ•œ ์ผ

  • 4์ฐจ๊ณผ์ œ ๋ฆฌํŒฉํ† ๋ง
  // api ํ˜ธ์ถœ
  const {isLoading, data: search, refetch} = useQuery(['search'], () => {
      if (findTitle && tag) return getSearch(findTitle, tag);
      else if (tag) return getSearch('', tag);
      else return getSearch(title);
    },
    {
      onError: () => {
        alert('ํ˜„์žฌ ๊ฒ€์ƒ‰์„ ์ด์šฉํ•  ์ˆ˜ ์—†์œผ๋‹ˆ ๋ฌธ์˜ ๋ฐ”๋ž๋‹ˆ๋‹ค.');
      },
    },
  );
  useEffect(() => {
    refetch();
  }, [refetch, title]);

๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์—์„œ useEffect ๋กœ fetch ํ•จ์ˆ˜๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋˜ ๊ฒƒ์„ useQuery ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฆฌํŒฉํ† ๋ง์„ ํ–ˆ๋‹ค

ํ™•์‹คํžˆ ๋นจ๋ผ์ง„ ๊ฒŒ ๋А๊ปด์กŒ๋‹ค

๊ทผ๋ฐ ์ž๊พธ ๊ฒ€์ƒ‰์–ด๋งŒ ์ž˜ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ๊ฐ€์ ธ์˜ค๋Š” ์ •๋ณด๋Š” ์—…๋ฐ์ดํŠธ๊ฐ€ ๋˜์ง€ ์•Š์•˜๋Š”๋ฐ ๊ฒฐ๊ตญ useEffect ๋กœ refetch ๋ฅผ ํ•ด์ค„ ์ˆ˜ ๋ฐ–์— ์—†์—ˆ๋‹ค

++ ๋‚˜์ค‘์— ๋‹ค๋ฅธ ํŒ€์›์ด ์•Œ๋ ค์คฌ๋Š”๋ฐ fetch ํ•จ์ˆ˜๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ ๊ฒ€์ƒ‰์–ด๋งˆ๋‹ค ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ๋งˆ๋‹ค query ํ‚ค๋กœ ๊ณ ์œ ํ•œ ๊ฐ’์„ ์คฌ์–ด์•ผ ํ–ˆ๋Š”๋ฐ ๊ณ„์† search ๋กœ ๊ฐ€์ ธ์˜ค๋‹ˆ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ๋‹ค๊ณ  ํ–ˆ๋‹ค ๊ทธ๋ž˜์„œ key ๊ฐ’์œผ๋กœ ๊ฒ€์ƒ‰์–ด๋ฅผ ์ง‘์–ด๋„ฃ์–ด์คฌ๋”๋‹ˆ refetch ๋„ ํ•„์š” ์—†์—ˆ๋‹ค… useQuery ์— ๋Œ€ํ•ด ์ž˜ ๊ณต๋ถ€๋„ ํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•˜๋‹ˆ ์ด๋Ÿฐ ์ผ์ด ์ƒ๊ธด ๊ฒƒ ๊ฐ™์•„ ๋ถ€๋„๋Ÿฌ์› ๋‹ค

 

react hook form ์จ์„œ ๋ฐฐ์†ก์ง€ ์ •๋ณด ๊ธฐ๋Šฅ ๊ตฌํ˜„ ์™„.

๊ฒ€์ƒ‰์–ด ์ž…๋ ฅ ๋•Œ ํ•œ๋ฒˆ ์จ๋ดค๋Š”๋ฐ๋„ input ์ด ๋งŽ์•„์ง€๋‹ˆ๊นŒ ๋ณต์žกํ•ด์ ธ์„œ ๊ฐ•์˜๋ฅผ ๊ณ„์† ๋ณด๋ฉด์„œ ํ–ˆ๋‹ค

์•„๋ฌด๋ž˜๋„ ๊ฐ•์˜๋ฅผ ๋ณด๋ฉด์„œ ์‹ค์ œ๋กœ ์ฝ”๋“œ๋ฅผ ์น˜๊ณ  ์“ด ๊ฒŒ ์•„๋‹ˆ๋ผ ์ž˜ ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š์•„ ์˜ค๋ž˜ ๊ฑธ๋ ธ๋‹ค

 

 

 

 

 

 

 

1/4

๐Ÿ“ ํ•  ์ผ

  • 4์ฐจ๊ณผ์ œ ๋ฆฌํŒฉํ† ๋ง ๋งˆ๋ฌด๋ฆฌ
  • ๋…ธ๋งˆ๋“œ ์ฝ”๋” ๋ฆฌ์•กํŠธ ๋งˆ์Šคํ„ฐ ํด๋ž˜์Šค typescript ํŒŒํŠธ ์‹ค์Šต

 

โœ… ํ•œ ์ผ

  • 4์ฐจ๊ณผ์ œ ๋ฆฌํŒฉํ† ๋ง ๋งˆ๋ฌด๋ฆฌ

๋‹ค์Œ ์šฐํŽธ๋ฒˆํ˜ธ api ์ด์šฉํ•˜์—ฌ ์ฃผ์†Œ ์ž…๋ ฅ ๊ธฐ๋Šฅ ๊ตฌํ˜„? ์™„.

https://www.npmjs.com/package/react-daum-postcode

๋‚˜๋Š” ์ƒˆ ์ฐฝ์— ์—ด์–ด์„œ ๋‹ค์Œ ์ฃผ์†Œ ๊ฒ€์ƒ‰์ฐฝ์ด ๋‚˜ํƒ€๋‚ฌ์œผ๋ฉด ์ข‹๊ฒ ๋Š”๋ฐ ๋‹ค๋“ค ๋ชจ๋‹ฌ์ฐฝ์œผ๋กœ ๋‚˜์˜ค๊ฒŒ ๊ตฌํ˜„ํ•ด์„œ ์œ„ ๋ฌธํ—Œ์„ ์ฐธ๊ณ ํ•ด์„œ ๊ตฌํ˜„ํ–ˆ๋‹ค

๋ณต๋ถ™ํ•˜๋ฉด ๋˜๋Š”๊ฑฐ๋ผ ๊ทธ๋ ‡๊ฒŒ ์–ด๋ ต์ง„ ์•Š์•˜๋‹ค

ํ™•์‹คํžˆ ๋ฌธ์„œ๋ฅผ ์ž˜ ์ฝ์–ด๋ด์•ผ ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค

 

์—๋Ÿฌ : https://mik-a.com/62

ํ•˜๋‹ค๊ฐ€ ์œ„ ๋งํฌ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”๋ฐ value ๊ฐ€ ๋‹ค ๋“ค์–ด์˜ค์ง€ ์•Š์•˜์„ ๋•Œ value ์— ๋„ฃ์–ด์ฃผ๋ ค๊ณ  ํ•ด์„œ ๊ทธ๋Ÿฐ ๊ฒƒ ๊ฐ™์•˜๋‹ค

 

๊ทธ๋ฆฌ๊ณ  ๊ตฌ๋งค ํŽ˜์ด์ง€์— ๊ฒฐ์ œ ๋กœ์ง์„ promise.all ๋กœ ํ•˜๊ณ  useQuery ์™€ useMutation ๋„์ž…ํ•ด๋ณด๋ ค๊ณ  ํ–ˆ์œผ๋‚˜ promise.all ์ฐ๋จน๋งŒ ํ•˜๋‹ค๊ฐ€ ๋์ด ๋‚ฌ๋‹ค^^..

๋‚ด์ผ์€ ์ฐ์œผ๋กœ ํ•ด์•ผ์ง€! ํ•ด๋‚ธ๋‹ค!

 

 

์˜ค๋Š˜ ๋ฆฌ์•กํŠธ ์ˆ˜์—…์„ ๋“ฃ๋‹ค๊ฐ€ firebase ๋ฅผ github ์œผ๋กœ deploy ํ•˜๋Š” ๊ณผ์ •์—์„œ ์—๋Ÿฌ๊ฐ€ ๋‚ฌ๋Š”๋ฐ

firebase-hosting-merge.yml ํŒŒ์ผ์—์„œ run: npm install && npm run build ์œผ๋กœ ์ž…๋ ฅํ•ด์ฃผ์ง€ ์•Š์•„์„œ ๋‚˜๋Š” ์˜ค๋ฅ˜์˜€๋‹ค

 

 

  • ๋…ธ๋งˆ๋“œ ์ฝ”๋” ๋ฆฌ์•กํŠธ ๋งˆ์Šคํ„ฐ ํด๋ž˜์Šค typescript ํŒŒํŠธ ์‹ค์Šต

๋ฆฌํŒฉํ† ๋งํ•˜๊ณ  ๋ฆฌ์•กํŠธ ์ˆ˜์—…๋“ฃ๋А๋ผ ์ƒˆ๋ฒฝ 3์‹œ๊นŒ์ง€ํ•ด์„œ ๊ฒจ์šฐ๊ฒจ์šฐ ์™„์„ฑ์‹œ์ผฐ๋‹ค

๊ทธ๋Ÿฐ๋ฐ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ๋“ค์–ด๋„ ๋“ค์–ด๋„ ์ž˜ ๋ชจ๋ฅด๊ฒ ์–ด์„œ ๊ณ„์† ์จ๋ด์•ผ ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๊ณ„์† ๋“ค์—ˆ๋‹ค

์–ด๋А ์ƒํ™ฉ์—์„œ ํƒ€์ž…์„ ์ง€์ •ํ•ด์ฃผ๊ณ  ์–ด๋–ป๊ฒŒ ์ž…๋ ฅ์„ ํ•ด์ค˜์•ผ ํ•˜๋Š”์ง€ ๊ฐ์„ ์ž˜ ๋ชป ์žก๊ฒ ๋‹ค

interface ๋ฅผ ๊ณ„์† ๋ถ™์—ฌ์ฃผ๊ธด ํ•˜๋Š”๋ฐ ์–ด๋А ๋•Œ๋Š” props ์— ํ•ด์ฃผ๊ณ  ์–ด๋А ๋•Œ๋Š” useState ์— ํ•ด์ฃผ๊ณ .. ๋„ˆ๋ฌด๋„ˆ๋ฌด ํ—ท๊ฐˆ๋ฆฐ๋‹ค~~!

 

 

 

 

 

 

 

 

1/5

๐Ÿ“ ํ•  ์ผ

  • 4์ฐจ๊ณผ์ œ ๋ฆฌํŒฉํ† ๋ง ์ฐ์ฐ๋งˆ๋ฌด๋ฆฌ
  • ๊ฐœ๋ฐœ๋ธ”๋กœ๊ทธ ์ •๋ฆฌ & ์ œ์ถœ

 

 

โœ… ํ•œ ์ผ

  • 4์ฐจ๊ณผ์ œ ๋ฆฌํŒฉํ† ๋ง ์ฐ์ฐ๋งˆ๋ฌด๋ฆฌ

promise.all ๋กœ ๋ฆฌํŒฉํ† ๋ง ํ–ˆ์œผ๋‚˜ ํ•ด๋‹น ๊ธฐ๋Šฅ์€ promise all์—์„œ ๋ฐฐ์—ด์— ๋‹ด๊ธด promise์ดํ–‰์ด ํ•˜๋‚˜๋ผ๋„ ๊ฑฐ๋ถ€๋˜๋ฉด ์ „์ฒด ๋ฐ˜ํ™˜์„ ๊ฑฐ๋ถ€๋กœ ๋ฐ˜ํ™˜ํ•˜๊ธดํ•˜์ง€๋งŒ ์ด๋ฏธ ์‹œํ–‰๋œ ์ดํ–‰์ด ์ทจ์†Œ๋œ๋‹ค๋Š” ์˜๋ฏธ๋Š” ์•„๋‹ˆ๋ผ๊ณ  ํ•จ

๊ทธ๋ž˜์„œ ์ด ๋กœ์ง์„ ๋‹ค์‹œ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์—์„œ ํ’ˆ์ ˆ์ƒํ’ˆ์ž์ฒด๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ฑฐ๋‚˜ ๊ตฌ๋งค ํŽ˜์ด์ง€์—์„œ ๋‹ค์‹œ ์—…๋ฐ์ดํŠธํ•ด์„œ ๊ฒฐ์ œ ๋ฒ„ํŠผ์„ ๋ง‰๋„๋ก ์ˆ˜์ •ํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์Œ

 

promise.all(products.map(
      // api ํ˜ธ์ถœ
    ))
      .then(๋ฐฐ์†ก๋น„ ์ƒ์„ฑ,๊ฒฐ์ œ,์‚ญ์ œ)
      .catch(์ฝ˜์†”์—๋Ÿฌ)

์ด๋Ÿฐ ์‹์œผ๋กœ ๋กœ์ง์„ ์ˆ˜์ •

 

 

  • ๊ฐœ๋ฐœ๋ธ”๋กœ๊ทธ ์ •๋ฆฌ & ์ œ์ถœ

์š”์ฆ˜์€ ํ•˜๋ฃจ ์ผ๊ณผ๊ฐ€ ๋๋‚˜๊ณ  ๋ฐ”๋กœ ์“ฐ๋Š” ๊ฑธ ํฌ๊ธฐํ•˜๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ์–ด๋–ค ๊ฑธ ํ–ˆ๋‹ค๊ณ  ์“ด ๋’ค์— ํ•˜๋ฃจ ์ „ ๋ชฐ์•„์“ฐ๋Š” ๊ฑธ ๋ฐ˜๋ณตํ•˜๊ณ  ์žˆ๋‹ค

์ด๋ž˜๋„ ๋˜๋‚˜ ์‹ถ์ง€๋งŒ ์ด๋ ‡๊ฒŒ ๋ผ๋„ ํ•˜๋Š” ๊ฒŒ ์–ด๋””๋ƒ ์‹ถ๋‹คใ…Žใ…Ž.. ๊ทธ๋ž˜๋„ ์ œ์ถœ์„ ๋ชปํ•˜๊ณ  ์žˆ๋Š” ๊ฑด ์•„๋‹ˆ๋‹ˆ๊นŒ..!

์ด ๊ต์œก ๊ณผ์ •์„ ๋“ค์€์ง€ ๋ฒŒ์จ 3๊ฐœ์›” ๋ฐ˜์ด ์ง€๋‚˜๋ฒ„๋ ธ๋‹ค

์‹œ๊ฐ„์ด ์–ด๋–ป๊ฒŒ ์ง€๋‚˜๊ฐ€๋Š”์ง€๋„ ๋ชจ๋ฅด๊ฒŒ ํ•˜๋ฃจํ•˜๋ฃจ ์ผ๊ณผ๋ฅผ ํ•ด๋‚ด๋Š” ํ•˜๋ฃจ์‚ด์ด์ฒ˜๋Ÿผ ์‚ด๊ณ  ์žˆ๋‹ค

๊ทธ๋ž˜๋„ ํ™•์‹คํžˆ 3๊ฐœ์›” ์ „์„ ์ƒ๊ฐํ•ด๋ณด๋ฉด ์•„๋ฌด๊ฒƒ๋„ ๋ชจ๋ฅด๋Š” ์‘์• ๋‹ค ์‘์• 

์•„์ง๋„ ๋ฐฐ์šธ ๊ฒŒ ์‚ฐ๋”๋ฏธ์ง€๋งŒ ์ด๋งŒํผ ์„ฑ์žฅํ•œ ๋‚ด๊ฐ€ ์ž๋ž‘์Šค๋Ÿฝ๋‹ค!!!

๋งค์ผ๋งค์ผ ๋น„๊ด€ํ•˜๋ฉฐ ์‚ฌ๋Š” ๊ฒƒ๋ณด๋‹ค ์ด๋ ‡๊ฒŒ ์กฐ๊ธˆ์ด๋‚˜๋งˆ ๋‚™๊ด€์ ์œผ๋กœ ์ƒ๊ฐํ•˜๋ฉฐ ์‚ฌ๋Š” ๊ฒŒ ๋‚ด ์ •์‹  ๊ฑด๊ฐ•์—๋Š” ํŽธํ•œ ๊ฒƒ ๊ฐ™๋‹ค..

์•ž์œผ๋กœ ์ˆ˜๋ฃŒ๊นŒ์ง€ 3๊ฐœ์›” ๋ฐ˜..! ์•„์ขŒ์žฃ ํŒŒ์ดํŒ…!~~!

 

 

 

 

 

 

 

1/6

๐Ÿ“ ํ•  ์ผ

  • 4์ฐจ ๊ณผ์ œ ๋ฆฌํŒฉํ† ๋ง : ๋ฐฐ์†ก๋น„ ๊ฒฐ์ œ ๋กœ์ง ์ˆ˜์ •

 

 

โœ… ํ•œ ์ผ

  • 4์ฐจ ๊ณผ์ œ ๋ฆฌํŒฉํ† ๋ง : ๋ฐฐ์†ก๋น„ ๊ฒฐ์ œ ๋กœ์ง ์ˆ˜์ •
for (let i = 0; i < products.length; i++) {
      let quantity = products[i].quantity || 1;
      while (quantity > 0) {
        if (i === 0 && quantity === 1) {
          const plus = updateProduct(products[i].productId, { price: products[i].price + 3000 });
          plus.then(async (data) => {
            await getBuy(data.id, accountId, accessToken);
            updateProduct(data.id, { price: data.price - 3000 });
          });
          console.log(
            `์žฅ๋ฐ”๊ตฌ๋‹ˆ ์ƒํ’ˆ+3000 ๊ฒฐ์ œ ${products[i].productId || products[i].id} ${products[i].price}`,
            products[i],
          );
          quantity--;
        } else {
          await getBuy(products[i].productId || products[i].id, accountId, accessToken);
          console.log(`์žฅ๋ฐ”๊ตฌ๋‹ˆ ์ƒํ’ˆ ๊ฒฐ์ œ ${i}๋ฒˆ์งธ`, products[i]);
          quantity--;
        }
      }
    }

์ƒํ’ˆ ์ค‘ ํ•˜๋‚˜์— ๊ฐ€๊ฒฉ์„ 3000์›(๋ฐฐ์†ก๋น„) ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ˆ˜์ •ํ•œ ๋’ค ํ•ด๋‹น ๊ฐ’์œผ๋กœ ๊ฒฐ์ œ๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ๋‹ค์‹œ ์ƒํ’ˆ์˜ ์›๋ž˜ ๊ฐ€๊ฒฉ์œผ๋กœ ์ˆ˜์ •ํ•˜๋Š” ๋กœ์ง์œผ๋กœ ๊ฒฐ์ œํ•˜๋Š” ๊ฒƒ์„ ์„ฑ๊ณตํ–ˆ๋‹ค

๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ ๊ฒฐ์ œ ๋‚ด์—ญ์—์„œ๋Š” ์ˆ˜์ •ํ•œ ๊ฒฐ๊ณผ๋กœ ๊ฒฐ์ œ๊ฐ€ ์ง„ํ–‰๋˜์—ˆ๋Š”์ง€ ์•Œ ์ˆ˜๊ฐ€ ์—†์—ˆ๋‹ค

๊ทธ ์ด์œ ๋Š” ๊ฒฐ์ œ ๋‚ด์—ญ api ์ž์ฒด์—์„œ ๊ฒฐ์ œํ•  ๋•Œ์˜ ๊ฐ€๊ฒฉ์„ ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ•ด๋‹น ์ƒํ’ˆ์˜ id ๋ฅผ ์ด์šฉํ•ด ์ตœ์ข… ์ˆ˜์ •๋œ ์ดํ›„์˜ ๊ฐ€๊ฒฉ์„ ๊ฐ€์ ธ์˜จ๋‹ค

 

 

ํ•ด๋‹น ๊ฐ’์„ ์›๋ž˜ ์ƒํ’ˆ์˜ ๊ฐ€๊ฒฉ์œผ๋กœ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ  ๊ฒฐ์ œํ–ˆ์„ ๋•Œ๋Š” ์ˆ˜์ • ์ด์ „์— ๊ฒฐ์ œํ•œ ๋‚ด์—ญ๋“ค๊นŒ์ง€ 3000์›(๋ฐฐ์†ก๋น„)์ด ์ถ”๊ฐ€๋œ ๊ฐ€๊ฒฉ์ž„์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค

๊ฒฐ์ œํ•  ๋•Œ ๋ฐฐ์†ก๋น„ ๋งŒํผ ์ƒํ’ˆ ๊ฐ€๊ฒฉ์— ์ถ”๊ฐ€ํ•˜์—ฌ ์ˆ˜์ •ํ•˜๊ณ  ๊ฒฐ์ œ ์ดํ›„ ์ƒํ’ˆ ๊ฐ€๊ฒฉ์„ ๋‹ค์‹œ ์›๋ž˜ ๊ฐ€๊ฒฉ์œผ๋กœ ์ˆ˜์ •ํ•˜๋Š” ๋กœ์ง์€ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•  ๊ฒƒ ๊ฐ™๋‹ค

๋ฐฑ์—”๋“œ๋ฅผ ์กฐ์ ˆํ•˜์ง€ ์•Š๋Š” ์ด์ƒ ๋ฐฐ์†ก๋น„๋ฅผ ์ž์ฒด๋ฅผ ์—†์• ๊ณ  ๊ฒฐ์ œ๋ฅผ ํ•˜๊ฑฐ๋‚˜ ๋ฐฐ์†ก๋น„ ์ƒํ’ˆ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋˜๋Œ์•„๊ฐ€์•ผ ๋  ๊ฒƒ ๊ฐ™๋‹ค

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

 

 

 

 

 

 

1/8

๐Ÿ“ ํ•  ์ผ

  • 4์ฐจ ๊ณผ์ œ ๋ฆฌํŒฉํ† ๋ง : ๋ฐฐ์†ก๋น„ ๊ฒฐ์ œ ๋กœ์ง ์ˆ˜์ •

 

โœ… ํ•œ ์ผ

  • 4์ฐจ ๊ณผ์ œ ๋ฆฌํŒฉํ† ๋ง : ๋ฐฐ์†ก๋น„ ๊ฒฐ์ œ ๋กœ์ง ์ˆ˜์ •

useMutation ์œผ๋กœ ๋ฆฌํŒฉํ† ๋งํ•˜๋ ค๊ณ  ํ–ˆ์œผ๋‚˜ ์•ˆ๋จ for ๋ฌธ์—์„œ ๋นผ์„œ ๋‹จ๋…์œผ๋กœ ๊ฒฐ์ œํ•ด๋„ ์•ˆ๋จ

๊ฑ ์•ˆ๋จ ์™œ ์•ˆ๋จ?

ํ•˜๋ฃจ์ฃ™์ผ ๋ถ™์žก๊ณ  ์žˆ์—ˆ์Œ ๋‚˜ ๊ทธ๋ƒฅ ์ง€์ณ ์“ฐ๋Ÿฌ์ง

๊ณ„์† _ref ์–ด์ฉŒ๊ตฌ๋ž‘ undefined ๋œธ ๋‚˜ ๊ทธ๋ƒฅ ๊ธฐ์ ˆ

fetch ํ•จ์ˆ˜์—์„œ console ์ฐ์œผ๋ฉด ๊ทธ๋ƒฅ undefined. ๋ฌด์ ๊ถŒ undefined.

๊ทธ๋ž˜์„œ ๋‹ค๋ฅธ ํŒ€์›๋“ค์ด ์“ด mutation ๋ฐฐ๊ปด๋ด„ ์‘ ์•„๋‹ˆ์•ผ ์•ˆ๋ผ

๋‹ค๋ฅธ ๊ณต๋ถ€ ํ•˜์ง€๋„ ๋ชปํ•˜๊ณ  ์ŠคํŠธ๋ ˆ์Šค ๋ฐ›์•„์„œ ๋ฐฐ๋‹ฌ ์˜ค์ง€๊ฒŒ ์‹œํ‚ดใ… .. ๋‚ด์ผ ํšŒ์˜๋•Œ ๋ฌผ์–ด๋ด์•ผ์ง€

 

 

 

 

 

 

12/26

๐Ÿ“ ํ•  ์ผ

  • ๋…ธ๋งˆ๋“œ ์ฝ”๋” ๋ฆฌ์•กํŠธ ๋งˆ์Šคํ„ฐ ํด๋ž˜์Šค typescript ํŒŒํŠธ ์ˆ˜๊ฐ•

 

โœ… ํ•œ ์ผ

  • ๋…ธ๋งˆ๋“œ ์ฝ”๋” ๋ฆฌ์•กํŠธ ๋งˆ์Šคํ„ฐ ํด๋ž˜์Šค typescript ํŒŒํŠธ ์ˆ˜๊ฐ•

4์ฐจ๊ณผ์ œ๊ฐ€ ๋๋‚ฌ์œผ๋‹ˆ ์•ž์œผ๋กœ ๋ฐฉํ–ฅ์„ ์–ด๋–ป๊ฒŒ ์žก์„์ง€ ํšŒ์˜๋ฅผ ํ–ˆ๋‹ค

ํšŒ์˜๋ฅผ ์กฐ๊ธˆ ์˜ค๋ž˜ํ•˜๋‹ค ๋ณด๋‹ˆ ๊ฐ•์˜๋Š” ์กฐ๊ธˆ๋ฐ–์— ๋“ฃ์ง€ ๋ชปํ–ˆ๋‹ค

์•„๋ฌด๋ž˜๋„ ์—ฐ๋ง์ด๊ณ  ํ•˜๋‹ˆ ๊ธˆํ† ์ผ ์—ฐ๋‹ฌ์•„ ์‰ฌ๋‹ค๋ณด๋‹ˆ๊นŒ ๋ชธ์ด ์•„์ง๋„ ์ •์‹ ์„ ๋ชป ์ฐจ๋ฆฌ๋Š”์ง€ ์ง‘์ค‘๋„ ๋ชปํ•˜๊ณ  ๋ญ˜ ํ•˜๋Š”์ง€๋„ ๋ชจ๋ฅด๊ฒ ๋‹ค

๋†€๋‹ค ์™”์œผ๋‹ˆ ์—ด์‹ฌํžˆ ํ•˜๊ฒ ๋‹ค ๋‹ค์งํ–ˆ๋Š”๋ฐ ๊ทธ ๋‹ค์ง์€ ๊ณ ์ด ์ ‘์–ด ๋‚˜๋นŒ๋ ˆ๋ผ~~

 

 

 

 

 

12/27

๐Ÿ“ ํ•  ์ผ

  • 4์ฐจ ๊ณผ์ œ ๋‹ค๋ฅธ ํŒ€์› ์ฝ”๋“œ ๋ฆฌ๋ทฐ

 

โœ… ํ•œ ์ผ

  • 4์ฐจ ๊ณผ์ œ ๋‹ค๋ฅธ ํŒ€์› ์ฝ”๋“œ ๋ฆฌ๋ทฐ

์˜ค๋Š˜์€ ์–ด์ œ ํšŒ์˜์—์„œ ๊ฐ์ž ๋‹ค๋ฅธ ํŒ€์›์˜ ์ฝ”๋“œ๋ฅผ ์ฝ๊ณ  ๋ฆฌ๋ทฐํ•˜์ž๋Š” ๋ง์ด ๋‚˜์™€์„œ ์ฝ”๋“œ๋ฆฌ๋ทฐ๋ฅผ ํ–ˆ๋‹ค

๋‹ค๋ฅธ ์‚ฌ๋žŒ ์ฝ”๋“œ๋ผ์„œ ๊ฑฐ์˜ ์ฝ๊ณ  ์ดํ•ดํ•˜๋Š” ๋ฐ์— ์‹œ๊ฐ„์„ ์ „๋ถ€ ์“ฐ๊ณ  ์—๋Ÿฌ ์ฐพ๋Š” ๊ฒƒ ๋ฐ–์— ๋ชปํ–ˆ๋‹ค

์ข€ ๋” ๋ณด๊ณ  ์‹ถ์–ด๋„ ์•„์ง ๊ณต๋ถ€๊ฐ€ ๋ถ€์กฑํ•ด ์–ด๋–ค ์ฝ”๋“œ๊ฐ€ ์ข‹์€ ์ฝ”๋“œ๊ณ  ์ข‹์ง€ ๋ชปํ•œ ์ฝ”๋“œ์ธ์ง€ ๋ชฐ๋ผ์„œ ๋ฆฌ๋ทฐ๋ฅผ ์ œ๋Œ€๋กœ ํ•  ์ˆ˜๊ฐ€ ์—†์—ˆ๋‹ค

๋‹ค๋ฅธ ๋ถ„๋“ค์€ ์–ด์ฐŒ ๊ทธ๋ฆฌ ์ž˜ ์ฐพ์•„๋‚ด๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค ์—ญ์‹œ ์•„๋Š” ๋งŒํผ ๋ณด์ด๋‚˜๋ณด๋‹ค

์ข€ ๋” ์—ด์‹ฌํžˆํ•ด์•ผ์ง€..

 

 

 

 

 

12/28

๐Ÿ“ ํ•  ์ผ

  • ๋…ธ๋งˆ๋“œ ์ฝ”๋” ๋ฆฌ์•กํŠธ ๋งˆ์Šคํ„ฐ ํด๋ž˜์Šค typescript ํŒŒํŠธ ์ˆ˜๊ฐ•

 

โœ… ํ•œ ์ผ

  • ๋…ธ๋งˆ๋“œ ์ฝ”๋” ๋ฆฌ์•กํŠธ ๋งˆ์Šคํ„ฐ ํด๋ž˜์Šค typescript ํŒŒํŠธ ์ˆ˜๊ฐ•

์˜ค๋Š˜ 4์ฐจ๊ณผ์ œ ๋ฆฌํŒฉํ† ๋ง ํšŒ์˜์—์„œ ๋…ธ์…˜์— ๊ธฐ๋กํ•ด๋’€๋˜ 4์ฐจ ๊ณผ์ œ ๊ธฐ๋ก๋“ค์„ ๊นƒํ—ˆ๋ธŒ ์œ„ํ‚ค๋กœ ์˜ฎ๊ธฐ๊ธฐ๋กœ ํ–ˆ๋‹ค

๊ทธ๋ž˜์„œ ์ด๋•Œ๊นŒ์ง€ ๋‚ด๊ฐ€ ํŒ€ ๋…ธ์…˜์— ์ ์—ˆ๋˜ ํšŒ์˜ ๊ธฐ๋ก์„ ๋งˆํฌ๋‹ค์šด์œผ๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ ํ•˜๊ณ  ์œ„ํ‚ค๋กœ ์ „๋ถ€ ์˜ฎ๊ฒผ๋‹ค

ํšŒ์˜ ๊ธฐ๋ก์ด ์ž˜ ์ •๋ฆฌ๋˜์ง€ ์•Š๊ณ  ๊ธฐ๋ก ์ผ๋ถ€๋ถ„์ด ๋น ์ ธ์žˆ๋Š” ๊ณณ๋„ ์žˆ์–ด์„œ ์˜ฎ๊ธฐ๋Š” ๋ฐ ์‹œ๊ฐ„์ด ์ข€ ๊ฑธ๋ ค์„œ ์›๋ž˜ ๊ณ„ํš์ด์—ˆ๋˜ ๋ฐฑ์ค€ 5๋ฌธ์ œ ํ’€๊ธฐ๋Š” ๋ชปํ•˜๊ณ  typescript ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์„ ์ „๋ถ€ ๋ณด๋Š” ๊ฒƒ๋งŒ ์™„๋ฃŒํ–ˆ๋‹ค

๊ณ„์† ๋ณด๋‹ค๋ณด๋‹ˆ ์ดํ•ด๊ฐ€ ์ž˜ ์•ˆ๋ผ์„œ ์ฝ”๋“œ๋ฅผ ์น˜๊ณ  ์‹ถ์€ ๋งˆ์Œ์ด ๊ตด๋š๊ฐ™์•˜์ง€๋งŒ ์ผ๋‹จ ํ•œ๋ฒˆ 1ํšŒ๋… ํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ์œผ๋‹ˆ ๊พน ์ฐธ๊ณ  ๋“ค์–ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค

 

 

 

 

 

12/29

๐Ÿ“ ํ•  ์ผ

  • ๋…ธ๋งˆ๋“œ ์ฝ”๋” ๋ฆฌ์•กํŠธ ๋งˆ์Šคํ„ฐ ํด๋ž˜์Šค crypto tracker1 ํŒŒํŠธ ์ˆ˜๊ฐ•
  • ๊ฐœ๋ฐœ ๋ธ”๋กœ๊ทธ ์ผ์ง€ ์ž‘์„ฑ

 

โœ… ํ•œ ์ผ

  • ๋…ธ๋งˆ๋“œ ์ฝ”๋” ๋ฆฌ์•กํŠธ ๋งˆ์Šคํ„ฐ ํด๋ž˜์Šค crypto tracker1 ํŒŒํŠธ ์ˆ˜๊ฐ•

์–ด์ œ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๋ถ€๋ถ„์„ ๋ณด๊ณ  ํฌ๋ฆฝํ†  ํŠธ๋ž˜์ปค๋ผ๋Š” ํŒŒํŠธ๋ฅผ ์ˆ˜๊ฐ•ํ•˜๋Š”๋ฐ ๋น„ํŠธ์ฝ”์ธ ์ •๋ณด api ๋ฅผ ํ™œ์šฉํ•ด์„œ ๋น„ํŠธ์ฝ”์ธ๋“ค์˜ ์‹œ์„ธ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์›นํŽ˜์ด์ง€๋ฅผ ์ œ์ž‘ํ•˜๋Š” ์˜์ƒ์ด์—ˆ๋‹ค

์•„๋ฌด๋ž˜๋„ ๊ณ„์† ๋Š˜์–ด์ง€๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ์ค‘๊ฐ„ ์ ๊ฒ€? ๋А๋‚Œ์œผ๋กœ ํฌ๋ฆฝํ†  ํŠธ๋ž˜์ปค2 ๊นŒ์ง€ ์ˆ˜๊ฐ•ํ•˜๊ณ  ํ•œ๋ฒˆ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด์„œ ๋‹ค์‹œ ํšŒ๋…ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค

 

 

  • ๊ฐœ๋ฐœ ๋ธ”๋กœ๊ทธ ์ผ์ง€ ์ž‘์„ฑ

์š”์ฆ˜ ์—ฐ๋ง์ด๋ผ ๋ฐ”์˜๋‹ค๊ณ  ํœ˜๋šœ๋ฃจ๋งˆ๋šœ๋ฃจ ํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค..

๋‚ด๋…„๋ถ€ํ„ฐ๋Š” ์ •์‹ ์ฐจ๋ฆฌ๊ณ  ํ•ด๋‚ด์•ผ์ง€!!!

๊ฐœ๋ฐœ๋ธ”๋กœ๊ทธ ์ž‘์„ฑ๋„ ์ผ์ง€๋งŒ ์“ฐ๊ณ  ๋„˜๊ฒจ๋ฒ„๋ฆฌ๊ณ ใ… ใ… 

์–ผ๋ฅธ ๋…ธ์…˜์— ์“ด ๊ฑฐ ๋ธ”๋กœ๊ทธ์—๋‹ค๊ฐ€ ์ •๋ฆฌํ•ด์•ผ๊ฒ ๋‹ค

 

 

 

 

 

12/30

๐Ÿ“ ํ•  ์ผ

  • ๋…ธ๋งˆ๋“œ ์ฝ”๋” ๋ฆฌ์•กํŠธ ๋งˆ์Šคํ„ฐ ํด๋ž˜์Šค crypto tracker2 ํŒŒํŠธ ์ˆ˜๊ฐ•
  • ๋…ธ๋งˆ๋“œ ์ฝ”๋” ๋ฆฌ์•กํŠธ ๋งˆ์Šคํ„ฐ ํด๋ž˜์Šค styled component ํŒŒํŠธ ์‹ค์Šต

 

โœ… ํ•œ ์ผ

  • ๋…ธ๋งˆ๋“œ ์ฝ”๋” ๋ฆฌ์•กํŠธ ๋งˆ์Šคํ„ฐ ํด๋ž˜์Šค crypto tracker2 ํŒŒํŠธ ์ˆ˜๊ฐ•

์ด๋ฒˆ ํŒŒํŠธ์—์„œ๋Š” 2์ฃผ๊ฐ„์˜ ์‹œ์„ธ๋ฅผ ํ•œ ๋ˆˆ์— ๋ณผ ์ˆ˜ ์žˆ๋„๋ก chart ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค

ํ™•์‹คํžˆ ์ฐจํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋‹ˆ ํ•œ ๋ˆˆ์— ๋“ค์–ด์˜ค๊ณ  ๋””์ž์ธ๋„ ๋ฌด๋‚œ๋ฌด๋‚œํ•ด์„œ ๋‚˜์ค‘์— chart ๋ฅผ ์“ฐ๊ฒŒ ๋  ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์“ธ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค

 

  • ๋…ธ๋งˆ๋“œ ์ฝ”๋” ๋ฆฌ์•กํŠธ ๋งˆ์Šคํ„ฐ ํด๋ž˜์Šค styled component ํŒŒํŠธ ์‹ค์Šต

๋“œ๋””์–ด ์ฝ”๋“œ๋ฅผ ์น  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค

์ง€๋ฃจํ•˜๊ฒŒ ๋ฐฐ์†์œผ๋กœ ์˜์ƒ๋งŒ ๋ณด๋‹ˆ ๋“ฃ๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ํž˜๋“ค์—ˆ๋Š”๋ฐ ์ฝ”๋“œ๋ฅผ ์น˜๋ฉด์„œ ํ•˜๋‹ˆ ์ข€ ๋” ์ดํ•ด๊ฐ€ ์ž˜ ๋๋‹ค

๊ทธ๋ฆฌ๊ณ  ํ•œ๋ฒˆ ํšŒ๋…ํ•˜๋‹ˆ ์ •๋ฆฌํ•˜๋Š” ์‹œ๊ฐ„์„ ๋งŽ์ด ์ค„์ผ ์ˆ˜ ์žˆ์—ˆ๋‹ค

๊นƒํ—ˆ๋ธŒ์— ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ๋„ ๋ฏธ๋ฃจ์ง€ ์•Š๊ณ  ๋ฐ”๋กœ๋ฐ”๋กœ ์—…๋ฐ์ดํŠธ ํ–ˆ๋‹ค

์ž๊พธ ์—…๋ฐ์ดํŠธ ํ•˜๋Š” ๊ฒƒ์„ ๊นŒ๋จน์–ด์„œ ๋ญ˜ ํ–ˆ์–ด๋„ ์ž”๋””๊ฐ€ ๋น„์–ด์žˆ์–ด์„œ ๋ง˜์ด ๋ถˆํŽธํ–ˆ๋Š”๋ฐ ๊ทธ๋ƒฅ ์ž˜ ๋ชปํ–ˆ์–ด๋„ ๋ฐ”๋กœ๋ฐ”๋กœ ์˜ฌ๋ฆฌ๋Š” ์Šต๊ด€์„ ๋“ค์—ฌ์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค

 

 

 

 

 

 

1/1

๐Ÿ“ ํ•  ์ผ

  • 4์ฐจ๊ณผ์ œ ์ฝ”๋“œ๋ฆฌ๋ทฐ ํ”ผ๋“œ๋ฐฑ ์ˆ˜์ •

 

โœ… ํ•œ ์ผ

  • 4์ฐจ๊ณผ์ œ ์ฝ”๋“œ๋ฆฌ๋ทฐ ํ”ผ๋“œ๋ฐฑ ์ˆ˜์ •

๋ฒŒ์จ 2023๋…„์ด ๋˜์—ˆ๋‹ค!!! ์ด๋ฒˆ ๋…„๋„ ๋ชฉํ‘œ๋Š” ์ทจ์—…์ด๋‹ค ์•„์ขŒ์žฃ!!!

์•„๋ฌด๋ž˜๋„ ์ƒˆํ•ด๋ผ์„œ ์–ด์ œ๊นŒ์ง€๋Š” ๋””๋น„์ง€๊ฒŒ ๋†€๊ณ  ์˜ค๋Š˜ ์ƒˆ๋กœ์šด ๋งˆ์Œ์œผ๋กœ ์ฒญ์†Œ๋ฅผ ํ•˜๋А๋ผ ์ €๋…๋ถ€ํ„ฐ ์‹œ์ž‘ํ–ˆ๋‹ค^^…

์—ด์‹ฌํžˆ ํ•˜๊ฒ ๋‹ค ๋ง˜ ๋จน์—ˆ์ง€๋งŒ 1์›” 1์ผ๋ถ€ํ„ฐ ๊ณ„ํš์ด ํ‹€์–ด์ ธ ๋ฒ„๋ฆฐ ๊ฒƒ ๊ฐ™์€ ๊ฑด ๋‚ด ์ฐฉ๊ฐ์ด๊ฒ ์ง€..^^

์•„๋ฌดํŠผ ์ด๋ฒˆ ์ฝ”๋“œ๋ฆฌ๋ทฐ๋•Œ ์ง€์ ๋ฐ›์€ ๊ฒŒ ๊ฝค ๋งŽ์•„์„œ ์ˆ˜์ •ํ•  ๊ฒƒ๋„ ๋งŽ์•˜๋‹ค

ํŠนํžˆ ๊ฒ€์ƒ‰ํ•  ๋•Œ input ์œผ๋กœ useForm ์œผ๋กœ ๋ฆฌํŒฉํ† ๋งํ•˜๋ผ๋Š” ๋ฆฌ๋ทฐ๊ฐ€ ์žˆ์–ด์„œ ์‚ฌ์šฉํ•ด๋ดค๋Š”๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๊ณผ์ •์—์„œ useForm ์— ๋Œ€ํ•ด ์ž˜ ๋ชจ๋ฅด๋‹ค๋ณด๋‹ˆ ๊ฐ•์˜๋„ ๋ณด๊ณ  ์˜ค๋ฅ˜๋‚œ ๊ฒƒ๋„ ํ•ด๊ฒฐํ•˜๋‹ค๋ณด๋‹ˆ ์‹œ๊ฐ„์„ ๋งŽ์ด ์จ๋ฒ„๋ ธ๋‹ค

๊ทธ๋ž˜์„œ ๋ช‡ ๊ฐœ๋Š” ๊ณ ์น˜์ง€ ๋ชปํ•˜๊ณ  ๋๋‚ด๋ฒ„๋ ธ๋‹ค..

 

 

 

 

12/19

๐Ÿ“ ํ•  ์ผ

  • 4์ฐจ ๊ณผ์ œ : ํ•€ํ…Œํฌ API ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์ƒํ’ˆ ๊ตฌ๋งคํ•˜๊ธฐ ๊ธฐ๋Šฅ ์ถ”๊ฐ€

 

โœ… ํ•œ ์ผ

  • 4์ฐจ ๊ณผ์ œ : ํ•€ํ…Œํฌ API ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์ƒํ’ˆ ๊ตฌ๋งคํ•˜๊ธฐ ๊ธฐ๋Šฅ ์ถ”๊ฐ€

์–ด์ œ 3์ฐจ ๊ณผ์ œ๋ฅผ ๋งˆ์น˜๊ณ  4์ฐจ ๊ณผ์ œ๋ฅผ ๋‹ค์‹œ ํ•˜๋Š”๋ฐ ๊ฒฐ์ œํ•  ๋•Œ๋งˆ๋‹ค ์œ„ ์ด๋ฏธ์ง€ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ด์„œ ์™œ ๊ฒฐ์ œ๊ฐ€ ๋˜์ง€ ์•Š์„๊นŒ ๋ณ„์ง“์„ ๋‹คํ–ˆ๋‹ค

์•Œ๊ณ ๋ณด๋‹ˆ ๋‹ค๋ฅธ ๋ถ„์ด ์ œํ’ˆ ์ •๋ณด ์ˆ˜์ • ๊ธฐ๋Šฅ ๊ตฌํ˜„์„ ํ•˜๋ฉด์„œ ํ’ˆ์ ˆ์„ ํ…Œ์ŠคํŠธํ•˜๋‹ค๊ฐ€ ๋‚œ ์˜ค๋ฅ˜์˜€๋‹ค

ํ•ด๋‹น ์ œํ’ˆ์ด ํ’ˆ์ ˆ์ผ ๊ฒฝ์šฐ ์•„์˜ˆ ๊ฒฐ์ œ๊ฐ€ ๋˜์ง€ ์•Š๋Š” ๊ธฐ๋Šฅ์ด ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค

 

์ด์ œ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์—์„œ ๋‹ค์ค‘ ์ƒํ’ˆ๋“ค์„ ์ด์–ด๋ฐ›์•„ ๊ฒฐ์ œํ•˜๋Š” ๋ถ€๋ถ„์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š”๋ฐ ํ™”๋ฉด์— ๋‚˜์˜ค๋Š” ๋ถ€๋ถ„์€ ์ด๋ฏธ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์—์„œ ๋„˜๊ฒจ์ค„ ๋•Œ ๋‹จ์ผ ์ƒํ’ˆ๊ณผ ๋‹ค์ค‘ ์ƒํ’ˆ์„ ๊ตฌ๋ถ„ํ•ด์ค˜์„œ ์ˆ˜์›”ํ•˜๊ฒŒ ๊ตฌํ˜„ํ–ˆ๋‹ค

๋‹ค๋งŒ, ๊ฒฐ์ œํ•˜๊ธฐ ๋ถ€๋ถ„์€ API ๋‹น ํ•˜๋‚˜์˜ ์ƒํ’ˆ๋งŒ ๊ฒฐ์ œํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ƒํ’ˆ๋งˆ๋‹ค, ๊ทธ๋ฆฌ๊ณ  ๊ฐ ์ƒํ’ˆ์˜ ๊ฐœ์ˆ˜๋งˆ๋‹ค ๊ฒฐ์ œ๋ฅผ ํ•ด์ค˜์•ผ ํ–ˆ๋‹ค

๊ทธ๋ž˜์„œ for ๋ฌธ์„ ๋Œ๋ ค ๊ฐ ์ƒํ’ˆ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ณ€์ˆ˜์— ์ €์žฅํ•˜์—ฌ while ๋ฌธ์œผ๋กœ ๊ฐœ์ˆ˜๊ฐ€ 0์ด ๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜์—ฌ ๊ฒฐ์ œํ•ด์ฃผ๊ณ  ๊ฒฐ์ œ ํ›„์—๋Š” ๊ฐœ์ˆ˜๋ฅผ ํ•˜๋‚˜ ์ค„์ด๋Š” ์‹์œผ๋กœ ๋กœ์ง์„ ์งœ์คฌ๋‹ค

๋ญ”๊ฐ€ ๋น„ํšจ์œจ์ ์ธ ๊ฒƒ ๊ฐ™์ง€๋งŒ api๊ฐ€ ํ•˜๋‚˜์”ฉ๋ฐ–์— ๊ฒฐ์ œํ•˜์ง€ ๋ชปํ•˜๋‹ˆ ์–ด์ฉ” ์ˆ˜ ์—†๋Š” ๋…ธ๋ฆ‡์ด์—ˆ๋‹ค..

๊ทผ๋ฐ ์ƒ๊ฐํ•ด๋ณด๋‹ˆ ๊ฒฐ์ œ ๊ธˆ์•ก์„ ์ •ํ•  ์ˆ˜ ์—†์–ด์„œ ๋ฐฐ์†ก๋น„๋ฅผ ๋”ฐ๋กœ ๊ฒฐ์ œํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค

๊ทธ๋ž˜์„œ ๋ฐฐ์†ก๋น„ ๋ถ€๋ถ„์€ ํŒ€์›๋“ค๊ณผ ์ƒ์˜๋ฅผ ํ•œ๋ฒˆ ํ•ด๋ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์•„์„œ ๋ฏธ์™„์„ฑ์œผ๋กœ ๋งˆ๋ฌด๋ฆฌํ–ˆ๋‹ค

 

 

 

 

 

12/20

๐Ÿ“ ํ•  ์ผ

  • 4์ฐจ ๊ณผ์ œ : ํ•€ํ…Œํฌ API  ๊ตฌ๋งคํ•˜๊ธฐ ๊ธฐ๋Šฅ ๋๋‚ด๊ธฐ

 

โœ… ํ•œ ์ผ

  • 4์ฐจ ๊ณผ์ œ : ํ•€ํ…Œํฌ API ๊ตฌ๋งคํ•˜๊ธฐ ๊ธฐ๋Šฅ ๋๋‚ด๊ธฐ

๋‚ด์ผ ์ œ์ถœ์ผ์ด๋ผ์„œ ํšŒ์˜๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๊ฐ์ž ์ง„ํ–‰์ƒํ™ฉ์„ ๊ณต์œ ํ–ˆ๋‹ค

ํšŒ์˜ ์ค‘์— ์–ด์ œ ๊ณ ๋ฏผํ–ˆ๋˜ ๋ฐฐ์†ก๋น„ ๋ถ€๋ถ„์„ ๋ฌผ์–ด๋ดค๋‹ค

ํŒ€์›๋ถ„๋“ค์ด ๋ฐฐ์†ก๋น„ ์ƒํ’ˆ์„ ํ•˜๋‚˜ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์–ด๋– ๋ƒ๋Š” ์˜๊ฒฌ์ด ๋‚˜์™”๋Š”๋ฐ ๋ฐฐ์†ก๋น„ ์ƒํ’ˆ์„ ํ•˜๋‚˜ ๋งŒ๋“ค๋ฉด ํ™”๋ฉด ์ƒ์—์„œ๋„ ๋ณด์ด์ง€ ์•Š๊ฒŒ ์ฒ˜๋ฆฌํ•ด์ค˜์•ผ ํ•˜๊ณ  ์—ฌ๋Ÿฌ๊ฐ€์ง€๋กœ ๋ณต์žกํ•ด์ ธ์„œ ๊ทธ๋Ÿผ ๊ฒฐ์ œํ•˜๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋ฐฐ์†ก๋น„ ์ƒํ’ˆ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ๊ฒฐ์ œ๊ฐ€ ๋˜๋ฉด ๋‹ค์‹œ ์‚ญ์ œํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์–ด๋– ๋ƒ๋Š” ์˜๊ฒฌ์ด ๋‚˜์™”๋‹ค

์ตœ์ข…์ ์œผ๋กœ ํ•ด๋‹น ์˜๊ฒฌ์ด ๊ดœ์ฐฎ์€ ๊ฒƒ ๊ฐ™์•„ ์˜ค๋Š˜์€ ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด๋ณด๋Š” ๊ฒƒ์œผ๋กœ ๋ชฉํ‘œ๋ฅผ ๋’€๋‹ค

์•„๋ฌด๋ž˜๋„ ์ƒํ’ˆ ์ถ”๊ฐ€์™€ ์ƒํ’ˆ ์‚ญ์ œ ์ด ๋‘๊ฐœ์˜ API๊ฐ€ ์ถ”๊ฐ€๋˜๋Š” ๊ฒƒ์ด๋‹ค ๋ณด๋‹ˆ ๋А๋ ค์ง€๋Š” ๊ฒƒ์ด ๊ฑฑ์ •๋˜์ง€๋งŒ ํ•ด๋‹น ๊ธฐ๋Šฅ ๊ตฌํ˜„์„ ์œ„ํ•ด ์–ด์ฉ” ์ˆ˜ ์—†๋Š” ์„ ํƒ์ด์—ˆ๋‹ค

ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ์™€์ค‘์—๋„ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์ˆœ์„œ๋Œ€๋กœ API ๊ฐ€ ์ž‘๋™๋˜์ง€ ์•Š์•„์„œ ๋ฐฐ์†ก๋น„ ์ƒํ’ˆ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ๋‚œ ๋’ค์— fetch ํ•จ์ˆ˜๋กœ ์„ฑ๊ณต ์‹œ ๋ฐ˜ํ™˜๋ฐ›๋Š” ๋ฐ์ดํ„ฐ ์ค‘ ์ƒํ’ˆ์˜ id ๊ฐ’์„ ์ด์šฉํ•˜์—ฌ ๋ณ€์ˆ˜์— ์ €์žฅํ•ด์ฃผ๊ณ  await ๋กœ ๊ฒฐ์ œ๊ฐ€ ์™„๋ฃŒ๋˜๊ณ  ๋‹ค์Œ ๋กœ์ง์„ ์‹คํ–‰ํ•˜๋„๋ก ํ•ด์คฌ๊ณ  ๋˜ await ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ญ์ œํ•œ ๋’ค ๋‹ค์Œ ๋กœ์ง์ด ์‹คํ–‰๋˜๋„๋ก ์ž‘์„ฑํ•ด์คฌ๋‹ค

๊พธ์—ญ๊พธ์—ญ ์ž‘๋™์ด ๋˜๋Š” ๊ฒƒ์—๋งŒ ์‹ ๊ฒฝ์„ ์จ์„œ ๋ญ”๊ฐ€ ํšจ์œจ์ ์ด์ง€ ๋ชปํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ ๊ฒƒ ๊ฐ™์•„ ๊ธฐ๋Šฅ ๊ตฌํ˜„์ด ์™„๋ฃŒ๋˜์—ˆ๋Š”๋ฐ๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋งˆ์Œ์ด ์ฐ์ฐํ–ˆ๋‹ค

 

 

 

 

 

12/21

๐Ÿ“ ํ•  ์ผ

  • 4์ฐจ ๊ณผ์ œ : ํ•€ํ…Œํฌ API ์ œ์ถœ์ผ! ๊ตฌ๋งคํ•˜๊ธฐ ๊ธฐ๋Šฅ ๋งˆ๋ฌด๋ฆฌ, ๋งˆ์ง€๋ง‰ ๋””๋ฒ„๊น…, README ์ž‘์„ฑ

 

โœ… ํ•œ ์ผ

  • 4์ฐจ ๊ณผ์ œ : ํ•€ํ…Œํฌ API ์ œ์ถœ์ผ! ๊ตฌ๋งคํ•˜๊ธฐ ๊ธฐ๋Šฅ ๋งˆ๋ฌด๋ฆฌ, ๋งˆ์ง€๋ง‰ ๋””๋ฒ„๊น…, README ์ž‘์„ฑ

์ด์ œ ์ฐ์ฐ์ฐ์œผ๋กœ ์ œ์ถœํ•˜๋Š” ๋‚ ์ด๋ผ ๊ตฌ๋งคํ•˜๊ธฐ ๊ธฐ๋Šฅ์„ ๋งˆ๋ฌด๋ฆฌํ•˜๊ณ  ๋””๋ฒ„๊น…์„ ํ•œ ๋’ค readme ๋ฅผ ์ž‘์„ฑํ•ด์„œ ์ œ์ถœํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค

๋น ๋ฐค์งœ์ž” ์™„์„ฑ~~~

๊ธฐ๋Šฅ๋งŒ ๊ตฌํ˜„ํ•˜๊ณ  css ๋Š” ๊ฑฐ์˜ ๋งนํƒ•์ด๋ผ์„œ ์™„์„ฑ๋œ ๊ฒƒ ๊ฐ™์ง€๋„ ์•Š์•˜๋Š”๋ฐ css ๋ฅผ ์™„์„ฑํ•˜๋‹ˆ ์ง„์งœ ํŽ˜์ด์ง€๊ฐ™์•„์„œ ๋„˜๋‚˜ ๋ฟŒ๋“ฏํ–ˆ๋‹ค

์‚ฌ์‹ค ๋””๋ฒ„๊น…ํ•˜๊ณ  ๊ทธ๋Ÿฌ๋А๋ผ ๋ฐฐ์†ก์ง€์ •๋ณด form ๊ตฌํ˜„์€ ๊ฑฐ์˜ ๋ชปํ•˜๊ณ  ์ œ์ถœํ–ˆ๋‹ค

readme ๋„ ๊ฑฐ์˜ ์“ฐ๋Š” ๋ฐ ๋‘์‹œ๊ฐ„์ด ๊ฑธ๋ ค์„œ ๊ฒจ์šฐ ์ œ์ถœํ–ˆ๋‹ค

 

 

 

 

 

12/22

๐Ÿ“ ํ•  ์ผ

  • ๋…ธ๋งˆ๋“œ ์ฝ”๋” ๋ฆฌ์•กํŠธ ๋งˆ์Šคํ„ฐ ํด๋ž˜์Šค ๋“ฃ๊ธฐ
  • ๊ฐœ๋ฐœ ๋ธ”๋กœ๊ทธ ์ •๋ฆฌ & ์ œ์ถœ

 

โœ… ํ•œ ์ผ

  • ๋…ธ๋งˆ๋“œ ์ฝ”๋” ๋ฆฌ์•กํŠธ ๋งˆ์Šคํ„ฐ ํด๋ž˜์Šค ๋“ฃ๊ธฐ

ํ•˜๋ ค๊ณ  ํ–ˆ์œผ๋‚˜,, ์–ด์ œ ์ œ์ถœํ•œ 4์ฐจ ๊ณผ์ œ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒจ ํ•ด๊ฒฐํ•˜๋А๋ผ ์‹œ๊ฐ„์„ ๊ฑฐ์˜ ๋‹ค ๋ณด๋‚ด์„œ typescript ์•ž๋ถ€๋ถ„ ์กฐ๊ธˆ๋ฐ–์— ๋“ฃ์ง€ ๋ชปํ–ˆ๋‹ค

์–ด์ œ 4์ฐจ๊ณผ์ œ๋ฅผ ์ œ์ถœํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•˜๋‹ค๊ฐ€ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์—์„œ ๊ตฌ๋งคํ•˜๊ธฐ ํ›„ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์ƒํ’ˆ์ด ์‚ฌ๋ผ์ ธ์•ผ ํ–ˆ๋‹ค๋Š” ๊ฑธ ๊ทธ์ œ์•ผ ์•Œ์•„์„œ ํ•ด๊ฒฐํ•ด๋ณด๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ๊ทธ๊ฑด ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ธฐ๋Šฅ ๋‹ด๋‹น์ž๊ฐ€ ํ•ด๊ฒฐํ•ด์ค˜์•ผ ํ•˜๋Š” ๊ฑฐ๋ผ ๊ทธ๋ถ„ํ•œํ…Œ ๋„˜๊ฒผ์—ˆ๋‹ค

๊ทผ๋ฐ ์˜ค๋Š˜ ๋‹ค์‹œ ์ฝ”๋“œ๋ฅผ ๋ณด๋Š”๋ฐ ๋‚ด ๋‹จ์ผ ์ƒํ’ˆ ๊ตฌ๋งค ์ฝ”๋“œ๊ฐ€ ์—†์–ด์ ธ ์žˆ์–ด์„œ ์ƒ์„ธ ํŽ˜์ด์ง€ ๋‹จ์ผ ๊ตฌ๋งค๋ฅผ ํ•  ๋•Œ ๊ตฌ๋งคํ•˜๊ธฐ ํŽ˜์ด์ง€์—์„œ ์ƒํ’ˆ์ด ๋‚˜์˜ค์ง€ ์•Š๊ณ  ์žˆ์—ˆ๋‹ค

๊ทธ๋ž˜์„œ ์กฐ๊ธˆ ๊ทธ๋žฌ์ง€๋งŒ ์–ด์ œ ์ฝ”๋“œ๋ฅผ ๊ณ ์น˜๋‹ค๊ฐ€ ์‹ค์ˆ˜๋กœ ์ง€์›Œ์กŒ๋‚˜๋ณด๋‹ค ์ƒ๊ฐํ•˜๊ณ  ๋‹ค์‹œ ์ž‘์„ฑํ•˜์—ฌ ์ˆ˜์ •ํ–ˆ๋‹ค

 

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

 

  • ๊ฐœ๋ฐœ ๋ธ”๋กœ๊ทธ ์ •๋ฆฌ & ์ œ์ถœ

๋‚ด์ผ๋ถ€ํ„ฐ ์ผ์š”์ผ๊นŒ์ง€ ์ญ‰ ์ผ์ด ์žˆ์–ด ๊ณต๋ถ€๋Š” ์ปค๋…• ์•„๋ฌด๊ฒƒ๋„ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด์ผ ์ œ์ถœํ•  ๊ฐœ๋ฐœ ๋ธ”๋กœ๊ทธ๋ฅผ ๋ฏธ๋ฆฌ ์ž‘์„ฑํ•˜์—ฌ ์ œ์ถœํ–ˆ๋‹ค

์ด๋ฒˆ์ฃผ ๋ฆฌ์•กํŠธ ์ˆ˜์—…๋•Œ ๊ธฐ๋กํ•œ ๊ฒŒ ์—†์–ด์„œ ์ œ์ถœํ•  ๊ธ€์ด ์—†์–ด์„œ ๊ทธ๋ƒฅ ์ผ์ง€๋งŒ ์ž‘์„ฑํ•ด์„œ ์ œ์ถœํ–ˆ๋‹ค

์ข€ ๋” ๊ธฐ๋ก์— ํž˜์จ์•ผ ํ•˜๋Š”๋ฐ ์•„๋ฌด๋ž˜๋„ ๊ณผ์ œ ๋•Œ๋ฌธ์— ๊ฐ•์˜๋ฅผ ๋“ฃ๋А๋ผ ๊ธฐ๋ก์„ ๊ฑฐ์˜ ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค ์•ž์œผ๋กœ ์ข€ ๋” ๊ธฐ๋ก์— ๊ณต์„ ๋“ค์—ฌ์•ผ ๊ฒ ๋‹ค

 

 

 

 

 

 

 

12/12

๐Ÿ“ ํ•  ์ผ

  • 4์ฐจ ๊ณผ์ œ : ํ•€ํ…Œํฌ API ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • 3์ฐจ ๊ณผ์ œ ๋‹ค๋ฅธ ์ˆ˜๊ฐ•์ƒ ์ฝ”๋“œ ๋ฆฌ๋ทฐ

 

โœ… ํ•œ ์ผ

  • 4์ฐจ ๊ณผ์ œ : ํ•€ํ…Œํฌ API ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ๊ตฌํ˜„

์ด๋ฒˆ์—๋„ ๊ธฐ๋Šฅ ๋ถ„๋ฐฐ ํšŒ์˜๋ฅผ ๊ฑฐ์ณ ํ•˜๊ณ  ์‹ถ์€ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค

์›๋ž˜๋Š” ๊ตฌ๋งคํ•˜๊ธฐ๋ฅผ ํ•ด๋ณด๊ณ  ์‹ถ์—ˆ์ง€๋งŒ ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ถ„์ด ๋จผ์ € ์œ ์ € ์ •๋ณด๋ฅผ ์ค˜์•ผ ํ™•์‹คํžˆ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•„ ๊ฒ€์ƒ‰์„ ํ•œ๋ฒˆ ํ•ด๋ดค๋‹ค

์‚ฌ์‹ค ์ด์ „์— ํ”„๋กœ์ ํŠธ์—์„œ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜์ง€ ๋ชปํ•ด์„œ ์•„์‰ฌ์› ๋Š”๋ฐ ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜๋‹ค

๋‚ด ๊ณ„ํš์€ input ์— ๊ฒ€์ƒ‰์–ด๋ฅผ ์ž…๋ ฅํ•˜์—ฌ enter ํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ฃผ์†Œ์— ๊ฒ€์ƒ‰์–ด๊ฐ€ ๋„˜์–ด๊ฐ€๊ณ  ์ฃผ์†Œ์—์„œ ๋ฐ›์€ ๊ฒ€์ƒ‰์–ด๋ฅผ ๊ฒ€์ƒ‰ API ์— ๋„ฃ์–ด์„œ ์š”์ฒญํ•œ ๋’ค ๋ฐ›์€ ์ƒํ’ˆ ์ •๋ณด๋“ค์„ ๋ฟŒ๋ ค์ฃผ๋Š” ๊ฒƒ์ด์—ˆ๋‹ค

 

๊ทธ๋ž˜์„œ ๋‚ด๊ฐ€ ๊ตฌ์ฒด์ ์œผ๋กœ ๊ตฌํ˜„ํ•œ ๊ฒƒ :

  1. ๋ผ์šฐํ„ฐ์— search ํŽ˜์ด์ง€ ๋จผ์ € ์ถ”๊ฐ€ํ•˜๊ณ ,
  2. ์š”์ฒญํ•  ๊ฒ€์ƒ‰ API ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•œ ๋’ค,
  3. header ์ปดํฌ๋„ŒํŠธ์—์„œ useState ๋กœ input ์˜ value ๊ฐ’ ์ €์žฅํ•˜์—ฌ ๊ฒ€์ƒ‰์–ด๋ฅผ ์ž…๋ ฅํ•œ ํ›„ enter ํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด form ํƒœ๊ทธ์˜ action ์†์„ฑ๊ฐ’์œผ๋กœ search ํŽ˜์ด์ง€ ์ด๋™ํ•˜๋„๋ก ๋งŒ๋“ค์—ˆ๋‹ค
  4. ๊ทธ๋Ÿฌ๋‚˜ search/${value} ๋งŒ ์ž‘์„ฑํ•˜๋ฉด ๋‹ค๋ฅธ ๊ฒ€์ƒ‰์–ด๋ฅผ ์ž…๋ ฅํ•  ๋•Œ๋งˆ๋‹ค ์ฃผ์†Œ์— search ๊ฐ€ ์ถ”๊ฐ€๋˜๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒ๋˜์–ด useLocation ๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด ์ฃผ์†Œ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  search ๊ฐ€ ๋“ค์–ด์žˆ์œผ๋ฉด value ๋งŒ ๋„ฃ์–ด์ฃผ๋„๋ก ์„ค์ •ํ–ˆ๋‹ค
  5. search ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค์–ด useParams ๋กœ ๊ฒ€์ƒ‰์–ด ๋ฐ›์•„์˜จ ๋’ค,
  6. ํƒœ๊ทธ๋งŒ ์ž…๋ ฅํ–ˆ์„ ๋•Œ๋ฅผ ๋Œ€๋น„ํ•ด ํƒœ๊ทธ๋ฅผ ๋จผ์ € ์ฐพ์•„ ํƒœ๊ทธ์— ์ €์žฅํ•˜๊ณ ,
  7. ํ‚ค์›Œ๋“œ๊ฐ€ ๋‘ ๊ฐœ ์ด์ƒ์ผ ๋•Œ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ผ๋ฐ˜๊ฒ€์ƒ‰์–ด์™€ ํƒœ๊ทธ๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ  ํ‚ค์›Œ๋“œ๊ฐ€ ํ•˜๋‚˜๊ณ  ํƒœ๊ทธ๊ฐ€ ์žˆ์„ ๋•Œ๋Š” ๊ฒ€์ƒ‰์–ด๋ฅผ ํƒœ๊ทธ๋กœ ์„ค์ •ํ•˜์—ฌ ํ™”๋ฉด์— ์ถœ๋ ฅํ•  ์ •๋ณด๋ฅผ ๊ตฌ๋ถ„ํ•ด์„œ search ๋ณ€์ˆ˜์— ํ• ๋‹นํ–ˆ๋‹ค
  8. ์ผ๋ฐ˜๊ฒ€์ƒ‰์–ด์™€ ํƒœ๊ทธ๊ฐ€ ๊ฐ™์ด ์žˆ์„ ๋•Œ๋Š” ์ผ๋ฐ˜๊ฒ€์ƒ‰์–ด์™€ ํƒœ๊ทธ๋ฅผ ๊ฐ™์ด ๋„ฃ์–ด์„œ ์ถœ๋ ฅ, ํƒœ๊ทธ๋งŒ ์žˆ์„ ๋•Œ ํƒœ๊ทธ๋งŒ ์ถœ๋ ฅ, ์ผ๋ฐ˜๊ฒ€์ƒ‰์–ด๋งŒ ์žˆ์„ ๋•Œ ์ผ๋ฐ˜ ๊ฒ€์ƒ‰์–ด๋งŒ ๋„ฃ์–ด์„œ ์ถœ๋ ฅํ•˜๋„๋ก ์„ค์ •ํ–ˆ๋‹ค
  9. ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค์ง€ ๋ชปํ–ˆ์œผ๋ฉด ์•„๋ฌด๊ฒƒ๋„ ์ถœ๋ ฅํ•˜์ง€ ์•Š๋„๋ก ์„ค์ •, ๊ฐ€์ ธ์™”๋Š”๋ฐ๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ •๋ณด๊ฐ€ ์—†์œผ๋ฉด ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๊ฐ€ ์—†์Œ์„ ์ถœ๋ ฅํ•˜๋„๋ก ์ž‘์„ฑํ–ˆ๋‹ค
  10. SearchItem ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค์–ด props ๋กœ ์ •๋ณด ์ •๋‹ฌํ•˜์—ฌ ๊ฐ€์ ธ์˜จ ์ •๋ณด๋งŒํผ ๋ฐ˜๋ณตํ•˜์—ฌ ์ถœ๋ ฅํ•˜๊ณ ,
  11. props ๋กœ ๊ฐ’ ๋ฐ›์•„์™€์„œ ํ™”๋ฉด์— ์ถœ๋ ฅํ•œ ๋’ค,
  12. SearchItem ์ปดํฌ๋„ŒํŠธ์—์„œ useNavigate ๋กœ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋กœ ๋‚˜์˜จ ์ƒํ’ˆ์„ ํด๋ฆญํ•˜๋ฉด ์ƒ์„ธํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋„๋ก ์ž‘์„ฑํ–ˆ๋‹ค

 

์‚ฌ์‹ค ๊ฒ€์ƒ‰์–ด๋ฅผ ๋ฐ›์•„์„œ ๊ตฌ๋ถ„ํ•˜๋Š” ๋กœ์ง์„ ์ž‘์„ฑํ•  ๋•Œ ๊ฐ„๋‹จํ•  ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ์ƒ๊ฐ๋ณด๋‹ค ์ฝ”๋“œ๊ฐ€ ๊ธธ์–ด์ง€๊ณ  ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค˜์•ผ ํ•˜๋Š” ๊ฒƒ๋„ ์žˆ์–ด์„œ ๋งŽ์€ ์‹œ๊ฐ„์„ ๋ณด๋ƒˆ๋‹ค

๊ตฌํ˜„ ์ดํ›„ ํŒ€์›์ด ๋‚ด ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด์„œ ์–ด๋–ป๊ฒŒ ๋กœ์ง์„ ์งฐ๋ƒ๊ณ  ๊ณ ์ƒํ–ˆ๋‹ค๊ณ  ๋ง์”€ํ•ด์ฃผ์…จ๋Š”๋ฐ ์ •๋ง ๋ฟŒ๋“ฏํ–ˆ๋‹คใ…Žใ…Ž

๊ตฌํ˜„ํ•  ๋•Œ๋Š” ์กฐ๊ธˆ ํž˜๋“ ๋ฐ ์™„์„ฑํ•˜๊ณ  ๋‚˜๋ฉด ์žฌ๋ฏธ๋ฅผ ๋А๋ผ๊ณ  ์š•์‹ฌ๋„ ๋‚œ๋‹ค

์ข€ ๋” ๋ฐฐ์›Œ์„œ ์ข‹์€ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ๋‹ค

 

 

  • 3์ฐจ ๊ณผ์ œ ๋‹ค๋ฅธ ์ˆ˜๊ฐ•์ƒ ์ฝ”๋“œ ๋ฆฌ๋ทฐ

๋‹ค๋ฅธ ์ˆ˜๊ฐ•์ƒ๋ถ„๋“ค์ด ์—ด์‹ฌํžˆ ํ•ด์ฃผ์‹œ๊ณ  ํ”„๋กœ์ ํŠธ ํ€„๋ฆฌํ‹ฐ๋„ ๋†’์•„์„œ ๋‚ด ํ”„๋กœ์ ํŠธ๊ฐ€ ์กฐ๊ธˆ ๋ถ€๋„๋Ÿฌ์› ๋‹ค

๊ฒ‰๋งŒ ๋ป”์ง€๋ฅด๋ฅดํ•˜๊ณ  ์‹ค์†์€ ์—†๋Š” ๊ฒƒ ๊ฐ™์•˜๋‹ค

๋ฌผ๋ก  ์ตœ์„ ์„ ๋‹คํ–ˆ์ง€๋งŒ ๋‹ค๋ฅธ ์ˆ˜๊ฐ•์ƒ์˜ ์ฝ”๋“œ์™€ ๊ฒฐ๊ณผ๋ฌผ์„ ๋ณด๋‹ˆ ์ฃผ๋ˆ…์ด ๋“œ๋Š” ๊ฑด ์–ด์ฉ” ์ˆ˜ ์—†๋‚˜ ๋ณด๋‹ค

์‹ฌ์ง€์–ด ์ด์ œ ๊ต์œก ์ค‘๋ฐ˜์ฏค์— ์˜ค๋‹ˆ ๋ณผ ์ฝ”๋“œ๋„ ๋งŽ๊ณ  ๋ณต์žกํ•ด์„œ ๋ฆฌ๋ทฐ๋ฅผ ์ œ๋Œ€๋กœ ๋‚จ๊ธธ ์ˆ˜ ์—†์—ˆ๋‹ค

๊ณต๋ถ€๋ฅผ ์ข€ ๋” ์—ด์‹ฌํžˆ ํ•ด์„œ ์‹ค๋ ฅ์„ ํ‚ค์›Œ์„œ ๋‹ค๋ฅธ ๋ถ„๋“ค์—๊ฒŒ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ๋‚จ๊ธฐ๊ณ  ์‹ถ๋‹ค

 

 

 

 

 

12/13

๐Ÿ“ ํ•  ์ผ

  • 4์ฐจ ๊ณผ์ œ : ํ•€ํ…Œํฌ API ๊ฒ€์ƒ‰ ์ •๋ ฌ ๊ตฌํ˜„

 

โœ… ํ•œ ์ผ

  • 4์ฐจ ๊ณผ์ œ : ํ•€ํ…Œํฌ API ๊ฒ€์ƒ‰ ์ •๋ ฌ ๊ตฌํ˜„

์ด์ œ ๊ฒ€์ƒ‰์€ ์–ด๋А์ •๋„ ์ •๋ ฌ์€ ๊ตฌํ˜„์ด ๋˜์–ด์„œ ๊ฐ€๊ฒฉ์ˆœ์œผ๋กœ ์ •๋ ฌ์„ ๊ตฌํ˜„ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค

useState ๋กœ ๋ฒ„ํŠผ์ด ํด๋ฆญ๋  ๋•Œ๋งˆ๋‹ค set ํ•จ์ˆ˜์— ๋‹ค๋ฅธ sort ํ•จ์ˆ˜๋ฅผ ๋„ฃ์–ด์คฌ๋Š”๋ฐ ์ž๊พธ ํด๋ฆญ ํ•œ ๋ฒˆํ•  ๋งŒ ์ •๋ ฌ๋˜๊ณ  ๊ทธ ๋‹ค์Œ ๋‹ค๋ฅธ ๋ฒ„ํŠผ์„ ํด๋ฆญํ–ˆ์„ ๋•Œ๋Š” ์ •๋ ฌ์ด ์ž‘๋™๋˜์ง€ ์•Š๋Š” ๊ฑฐ๋‹ค

๊ทธ๋ž˜์„œ sort ํ•จ์ˆ˜ ์„ค๋ช…์„ ๋‹ค์‹œ ๋ดค๋Š”๋ฐ ์•Œ๊ณ  ๋ณด๋‹ˆ ๊ธฐ์กด ๋ฐฐ์—ด์„ ๋ฐ”๊พธ๋Š” ๊ฑฐ๋ผ ์ „๊ฐœ์—ฐ์‚ฐ์ž๋กœ ์ƒˆ๋กœ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ๋งŒ๋“ค์—ˆ์–ด์•ผ ํ–ˆ๋‹ค

๊ทผ๋ฐ ์•Œ๊ณ  ๋ณด๋‹ˆ ๋‹ค๋ฅธ ํŒ€์›์ด ์ •๋ ฌ ๋ฒ„ํŠผ์„ ํ•˜๊ธฐ๋กœ ํ–ˆ์—ˆ๋Š”๋ฐ ๋‚˜๋Š” ๊ฒ€์ƒ‰์˜ ์ •๋ ฌ๋ฒ„ํŠผ์€ ๋‚ด๊ฐ€ ๋”ฐ๋กœ ํ•˜๋Š” ์ค„ ์ฐฉ๊ฐํ•ด์„œ ์•ˆ ํ•ด๋„ ๋˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด๋ฒ„๋ ธ๋‹ค

๋‚ด ์‹ค์ˆ˜๋กœ ์‹œ๊ฐ„์„ ๋ฒ„๋ฆฐ ๊ฑฐ์ง€๋งŒ ๋ญ ํ•œ๋ฒˆ ๊ตฌํ˜„ํ•ด๋ดค์œผ๋‹ˆ ๋‹ค์Œ ๊ตฌํ˜„ํ•  ๊ธฐํšŒ๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ๋Š” ์ˆ˜์›”ํ•˜๊ฒ ์ง€ ๋ผ๊ณ  ์œ„์•ˆ ์‚ผ์œผ๋ฉฐ ์ข‹๊ฒŒ ์ƒ๊ฐํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค

 

 

 

 

 

12/14

๐Ÿ“ ํ•  ์ผ

  • 4์ฐจ ๊ณผ์ œ : ํ•€ํ…Œํฌ API ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ netlify ์˜ค๋ฅ˜ ์ˆ˜์ •

 

โœ… ํ•œ ์ผ

  • 4์ฐจ ๊ณผ์ œ : ํ•€ํ…Œํฌ API ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ netlify ์˜ค๋ฅ˜ ์ˆ˜์ •

์–ด์ œ ๊ทธ๋Ÿฐ ํ•ดํ”„๋‹์ด ์žˆ๊ณ  ๋‚˜์„œ pr ํ•˜๊ณ  4์ฐจ ๊ณผ์ œ ๋…ธ์…˜์—๋„ ๊ตฌํ˜„ํ•œ ๊ธฐ๋Šฅ์„ ์ž์„ธํ•˜๊ฒŒ ์ •๋ฆฌํ–ˆ๋Š”๋ฐ ๋ฐฐํฌํ•œ ์‚ฌ์ดํŠธ์—์„œ๋Š” ๊ฒ€์ƒ‰์ด ๋˜์ง€ ์•Š๋Š”๊ฑฐ๋‹ค

ํ•ด๋‹น ์˜ค๋ฅ˜ ๋ฌธ์žฅ์„ ๊ตฌ๊ธ€๋ง์„ ํ•ด์„œ ์ˆ˜์ •์„ ํ•ด๋ด๋„ ์˜ค๋ฅ˜๊ฐ€ ๊ณ ์ณ์ง€์งˆ ์•Š์•„์„œ ์ž์Šต์‹œ๊ฐ„ ๋‚ด๋‚ด ๋‹ค๋ฅธ ํŒ€์›๊ณผ ํ•จ๊ป˜ ๋จธ๋ฆฌ๋ฅผ ์‹ธ๋งค๋ฉฐ ๊ณ ๋ฏผ์„ ํ–ˆ๋‹ค

form ํƒœ๊ทธ์— action ์†์„ฑ๊ฐ’์œผ๋กœ ๊ฒ€์ƒ‰์–ด์™€ ํ•จ๊ป˜ ์ฃผ์†Œ๋ฅผ ๋„˜๊ฒจ์คฌ๋Š”๋ฐ / ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ๋ณด๋‚ด์คฌ๋”๋‹ˆ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์„ ์ œ๋Œ€๋กœ ํ•˜์ง€ ๋ชปํ•˜์—ฌ ๋ฐฐํฌ ํŽ˜์ด์ง€์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋‚œ ๊ฒƒ์ด ์•„๋‹๊นŒ ์ƒ๊ฐํ–ˆ๋‹ค

๊ทธ๋ž˜์„œ ๊ตฌ๊ธ€๋ง์œผ๋กœ ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง์„ ํƒ์ƒ‰ํ•˜์—ฌ ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ™”๋ฉด์— ๋ณด์—ฌ์ค„ ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ดค๋‹ค

๋ฆฌ์•กํŠธ ํ›…๋“ค์„ ์ฐพ์•„๋ณด๋‹ˆ useSearchParams ๋ผ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๋Š”๋ฐ ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ์“ฐ๋Š” ์‚ฌ๋žŒ์ด ์ž˜ ์—†๋Š”์ง€ ์‚ฌ์šฉ๋ฒ•์„ ์ฐพ์„ ์ˆ˜ ์—†์—ˆ๋‹ค

๊ทธ๋ž˜์„œ ๋ฌด์ž‘์ • ์ผ๋‹จ ์ฟผ๋ฆฌ๊ฐ’๋ถ€ํ„ฐ ๋„˜๊ฒจ๋ณด์ž ํ•˜๊ณ  input search ํƒ€์ž…์˜ name ์†์„ฑ์„ ์ด์šฉํ•˜์—ฌ '?s=๊ฒ€์ƒ‰์–ด' ์ด๋Ÿฐ ์‹์œผ๋กœ ์ฃผ์†Œ์— ์ฟผ๋ฆฌ๊ฐ’์ด ๋‚˜์˜ค๋Š” ๊ฑด ์„ฑ๊ณตํ–ˆ๋Š”๋ฐ ๊ฐ’์ด ๋„˜์–ด๊ฐ€๋ฉด search ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ณด์—ฌ์ค„ ๋ฐฉ๋ฒ•์„ ๋ชฐ๋ผ ํ—ค๋งค๊ณ  ์žˆ์—ˆ๋‹ค

๊ทธ๋Ÿฐ๋ฐ ๋‹ค๋ฅธ ํŒ€์›์ด ์ž๊ธฐ๊ฐ€ form ์œผ๋กœ /search ๋ฅผ ๋ณด๋‚ด ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ณด์ด๋Š” ๊ฑด ์„ฑ๊ณตํ–ˆ๋Š”๋ฐ ์ฟผ๋ฆฌ ๊ฐ’์˜ name ์„ ์ž…๋ ฅํ•  ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๊ฒ ๋‹ค๊ณ  ํ•˜๋Š” ๊ฒƒ์ด๋‹ค

๊ทธ๋ž˜์„œ name ์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค๊ณ  ๋ง์”€๋“œ๋ ธ๋”๋‹ˆ useSearchParams ์•ˆ์— get ํ•จ์ˆ˜๋กœ name ์„ ๊ฐ€์ ธ์™€ = ๋‹ค์Œ์— ์žˆ๋Š” ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์—ˆ๋‹ค

๊ทธ ํŒ€์›์ด ์—†์—ˆ์œผ๋ฉด ๋‚˜๋Š” ์ด ์˜ค๋ฅ˜๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†์—ˆ์„ ๊ฑฐ๋‹คใ… ใ…  ๋‚ด ์€์ธ..ใ… ใ… 

 

 

 

 

 

12/15

๐Ÿ“ ํ•  ์ผ

  • 4์ฐจ ๊ณผ์ œ : ํ•€ํ…Œํฌ API ๊ตฌ๋งคํ•˜๊ธฐ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ์‹œ์ž‘
  • ๋…ธ๋งˆ๋“œ ์ฝ”๋” ๋ฆฌ์•กํŠธ ๋งˆ์Šคํ„ฐ ํด๋ž˜์Šค recoil ํŒŒํŠธ ์ˆ˜๊ฐ•

 

โœ… ํ•œ ์ผ

  • 4์ฐจ ๊ณผ์ œ : ํ•€ํ…Œํฌ API ๋‹จ์ผ ์ƒํ’ˆ ๊ตฌ๋งคํ•˜๊ธฐ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ์‹œ์ž‘

์ด๋ฒˆ์—๋Š” ๋‚ด ๊ธฐ๋Šฅ ๊ตฌํ˜„์ด ๋จผ์ € ๋๋‚˜์„œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๊ธฐ๋‹ค๋ฆด ๊ฒธ ๋งก์€ ๊ธฐ๋Šฅ ๊ตฌํ˜„์„ ์™„๋ฃŒํ•œ ํ•œ ๋ถ„๊ณผ ํ•จ๊ป˜ ๋‚จ์€ ๊ธฐ๋Šฅ์„ ๋‚˜๋ˆ ์„œ ๋งก์•˜๋‹ค

์‚ฌ์‹ค ์žฅ๋ฐ”๊ตฌ๋‹ˆ๋ฅผ ๊ตฌํ˜„ํ•˜์‹  ๋ถ„์ด ์žฅ๋ฐ”๊ตฌ๋‹ˆ์—์„œ ์ •๋ณด๋ฅผ ๋„˜๊ฒจ์ค˜์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌ๋งคํ•˜๊ธฐ๋„ ๋ณธ์ธ์ด ๋งก๊ณ  ์‹ถ๋‹ค๊ณ  ํ•˜์…จ๊ณ  ๊ทธ๊ฒŒ ๋งž์•˜๋Š”๋ฐ ์•„์ง ๋””๋ฒ„๊น…ํ•  ๊ฒƒ๋„ ์žˆ๊ณ  ๊ตฌํ˜„์ด ์™„๋ฃŒ๋œ ๊ฒƒ์€ ์•„๋‹ˆ๋ผ ๋‚ด๊ฐ€ ๊ตฌ๋งคํ•˜๊ธฐ ๊ธฐ๋Šฅ์„ ๋งก๊ธฐ๋กœ ํ–ˆ๋‹ค

ํ•˜์ง€๋งŒ ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์ „์— ๋กœ๊ทธ์ธ์— ๋Œ€ํ•œ ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์œผ๋กœ recoil ์„ ์‚ฌ์šฉํ•˜์…จ๋Š”๋ฐ ๋‚˜๋„ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋ฉด์„œ ์“ธ ๊ฒƒ ๊ฐ™์•„ ๋ฏธ๋ฆฌ ๊ณต๋ถ€๋ฅผ ํ•ด์•ผ ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค

๊ทธ๋ž˜์„œ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ ๊ฒƒ์„ ๋…ธ์…˜์— ์ƒ์„ธํ•˜๊ฒŒ ์„ค๋ช…ํ•ด์ฃผ์…จ๋Š”๋ฐ ๋ด๋„ ์ž˜ ๋ชจ๋ฅด๊ฒ ์–ด์„œ recoil ๊ฐ•์˜๋ฅผ ๋ณด๋ฉฐ ๊ณต๋ถ€๋ฅผ ํ–ˆ๋‹ค

 

 

  • ๋…ธ๋งˆ๋“œ ์ฝ”๋” ๋ฆฌ์•กํŠธ ๋งˆ์Šคํ„ฐ ํด๋ž˜์Šค recoil ํŒŒํŠธ ์ˆ˜๊ฐ•

๋‚ด๊ฐ€ ์ง€๊ธˆ ๋ณด๊ณ  ์žˆ๋Š” ํŒŒํŠธ๋ณด๋‹ค ๋” ๋’ค์— ์žˆ๋Š” ํŒŒํŠธ๋ผ์„œ ์ผ๋‹จ recoil ๋งŒ ์ดํ•ดํ•ด๋ณด์ž ํ•˜๊ณ  ๊ณ„์† ๊ฐ•์˜๋งŒ ๋ดค๋‹ค

์ด์ „์— ๋ฐฐ์› ๋˜ redux ๋ณด๋‹ค ํ›จ์”ฌ ๊ฐ„๋‹จํ•˜๊ณ  ์‰ฝ๊ฒŒ ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์•˜๋‹ค

ํ™•์‹คํžˆ ์ฝ”๋“œ๋ฅผ ๋”ฐ๋ผ์น˜๋ฉด์„œ ์ดํ•ดํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ทธ๋Ÿฐ์ง€ ๋ฐฐ์šด ๊ฒƒ์ด ๋“ค์–ด์™”๋‹ค๊ฐ€ ๋‚˜๊ฐ€๋Š” ๋А๋‚Œ์ด์—ˆ์ง€๋งŒ ์–ด๋А์ •๋„ ๋Œ์•„๊ฐ€๋Š” ๊ฒƒ์€ ์ดํ•ดํ–ˆ๋‹ค

 

 

 

 

 

12/18

๐Ÿ“ ํ•  ์ผ

  • 3์ฐจ ๊ณผ์ œ : todo-list ํ”ผ๋“œ๋ฐฑ ์ˆ˜์ •

 

โœ… ํ•œ ์ผ

  • 3์ฐจ ๊ณผ์ œ : todo-list ํ”ผ๋“œ๋ฐฑ ์ˆ˜์ •

16, 17์ผ ๋‘˜ ๋‹ค ์ผ์ด ์žˆ์–ด์„œ ๊ฑฐ์˜ ์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค 4์ฐจ ๊ณผ์ œ ๊ธฐ๋Šฅ ๊ตฌํ˜„๋„ ์‹œ๊ธ‰ํ•˜์ง€๋งŒ 3์ฐจ ๊ณผ์ œ ํ”ผ๋“œ๋ฐฑ ์ˆ˜์ •์ด ์˜ค๋Š˜๊นŒ์ง€ ์˜€๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋ฃจ์ข…์ผ 3์ฐจ ๊ณผ์ œ๋งŒ ๋ถ™๋“ค๊ณ  ์žˆ์—ˆ๋‹ค

์ „์—ญ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” store.js, event ๊ฐ€ ๋ชจ์—ฌ์žˆ๋Š” ํ•จ์ˆ˜ event.js, ๊ธฐ๋Šฅ๋ณ„๋กœ ๋‹ค๋ฅธ ํšจ๊ณผ๋ฅผ ์ฃผ๋Š” ํ•จ์ˆ˜๋“ค์„(renderDelete.js, renderUpdate.js) ์ถ”๊ฐ€ํ•˜์—ฌ ์ข€ ๋” ์šฉ๋„๋ณ„๋กœ ๋ชจ๋“ˆํ™”๋ฅผ ํ–ˆ๋‹ค

๊ทธ๋ฆฌ๊ณ  ๊ฐ ํ•  ์ผ์— hover ํ•˜๋ฉด ์ตœ์‹  ์ˆ˜์ •์ผ์ด ํ‘œ์‹œ๋˜๋„๋ก ๋งŒ๋“ค์—ˆ๋‹ค

๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“ˆํ™”๋ฅผ ํ•˜๊ณ  ์˜ค๋ฅ˜๋ฅผ ์ˆ˜์ •ํ•˜๋А๋ผ ์‹œ๊ฐ„์„ ์ „๋ถ€ ๋ณด๋‚ด์„œ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์ธ ์ •๋ ฌ ์ˆœ์„œ ๋ฐ”๊พธ๊ธฐ๋Š” ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค

๋„ˆ๋ฌด๋‚˜ ์•„์‰ฌ์› ์ง€๋งŒ ๊ทธ๋ž˜๋„ ํ•˜๋‚˜ ๋นผ๊ณ  ์˜ค๋ฅ˜๋„ ์žก๊ณ  ๋ชจ๋“ˆํ™”๋„ ์–ด๋А ์ •๋„ ์„ฑ๊ณตํ•ด์„œ ๋ฟŒ๋“ฏํ–ˆ๋‹ค

 

 

 

 

+ Recent posts