TIL 0320

zittoยท2023๋…„ 3์›” 20์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
6/77
post-thumbnail

๐Ÿท๏ธ [๋ชฉ์ฐจ]

  • ๋‹ค์ด๋‚˜๋ฏน ๋ผ์šฐํŒ… ๋ฆฌ๋ทฐ
  • ํด๋”๊ตฌ์กฐ
  • Nullish-coalescing
  • ์‹ค๋ฌด์šฉ ํด๋”๊ตฌ์กฐ(container / presenter)
  • probs
    • props๋ฅผ ๋‚ด๋ ค์ฃผ๊ธฐ _ ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ
    • props ๋ฐ›์•„์˜ค๊ธฐ
  • export vs export default

๐Ÿ–‡๏ธ [์ถœ์ฒ˜ ๋ฐ ์ฐธ์กฐ]

์ฝ”๋“œ์บ ํ”„
๋ฆฌ์•กํŠธ ํŒŒ์ผ๊ตฌ์กฐ




๐Ÿ’ก ๋‹ค์ด๋‚˜๋ฏน ๋ผ์šฐํŒ… ๋ฆฌ๋ทฐ

โœ… ๋‹ค์ด๋‚˜๋ฏน ๋ผ์šฐํŒ… ์‹œ ์ฃผ์˜!

โ†’ ๋‹ค์ด๋‚˜๋ฏน ๋ผ์šฐํŒ… ํด๋”์— ๋“ค์–ด๊ฐˆ๋•Œ๋Š” /boards/qqq ์ด๋Ÿฐ์‹์œผ๋กœ url์„ ์ž…๋ ฅํ•œ๋‹ค.
๊ทธ๋ฆฌ๊ณ  qqq๋ถ€๋ถ„์—๋Š” ๊ฒŒ์‹œ๊ธ€ ์•„์ด๋””์˜ ์–ด๋–ค ๊ฐ’์„ ๋„ฃ์–ด๋„ boardId ํŽ˜์ด์ง€์— ์ ‘์†์ด ๋œ๋‹ค.
ํ•˜์ง€๋งŒ qqq๋ถ€๋ถ„์— new๋ฅผ ๋„ฃ๊ฒŒ ๋˜๋ฉด, boardId ํŽ˜์ด์ง€๊ฐ€ ์•„๋‹Œ newํด๋”์˜ index.js ํŒŒ์ผ์— ์ ‘์†์ด ๋œ๋‹ค.

๋‹ค์ด๋‚˜๋ฏน ํด๋”์˜ boardId ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์˜ค๊ณ  ์‹ถ๋‹ค๋ฉดโ“
โ†’ ๋‹ค์ด๋‚˜๋ฏน ํด๋”์˜ ํŒŒ๋ผ๋ฏธํ„ฐ(boardId)๋Š” router.query ์—์„œ ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ๋‹ค.
query๊นŒ์ง€๋งŒ ์ž…๋ ฅํ•˜๋ฉด boardId ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค์–‘ํ•œ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.
๋”ฐ๋ผ์„œ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ํ•˜๋‚˜์”ฉ ์ฝ˜์†”์— ์ฐ์–ด๋ณด๋ฉฐ ๊ฐ€์ง€๊ณ  ์˜ค์‹œ๋Š” ์—ฐ์Šต์„ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ!

โ—๏ธquery ๋Š” dynamic router์˜ ํŒŒ๋งˆ๋ฏธํ„ฐ๋ฅผ ํฌํ•จํ•œ ์กฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•œ ์ •๋ณด๋ฅผ ๋‹ด์€ ๊ฐ์ฒด์ด๋‹ค.
router ์ž์„ธํ•œ ์ •๋ณด


๐Ÿ’ก ํด๋” ๊ตฌ์กฐ

โœ… ์„œ๋น„์Šค์˜ ๊ทœ๋ชจ๊ฐ€ ์ปค์กŒ์„ ๊ฒฝ์šฐ

์„œ๋น„์Šค๊ฐ€ ์ปค์ง€๋ฉด ์ปค์งˆ์ˆ˜๋ก ๊ธฐ๋Šฅ์ด ๋งŽ์•„์ง€๊ธฐ ๋•Œ๋ฌธ์— ํด๋”๊ฐ€ ๊ต‰์žฅํžˆ ๋งŽ์•„์ง€๊ฒŒ ๋œ๋‹ค.

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

๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด, ํ•ด๋‹น ์ฃผ์†Œ์˜ ๋‚ด์šฉ์€ ๋ชจ๋‘ ํฐ ๊ทธ๋ฃน์— ๊ด€๋ จ๋œ ํŽ˜์ด์ง€์ž„์„ ๋ฐ”๋กœ ์•Œ์•„์ฐจ๋ฆด ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.
ํฐ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์–ด์ฃผ๋Š” ์˜ˆ์‹œ๋กœ๋Š” boards ๊ฐ™์€๊ฒƒ์ด ์žˆ๋‹ค.

๋Œ€๋ถ„๋ฅ˜์— ๋“ค์–ด๊ฐ„ ํด๋”๋“ค์€ ๋ชจ๋‘ ๊ฒŒ์‹œ๊ธ€๊ณผ ๊ด€๋ จ์žˆ๋Š” ํŽ˜์ด์ง€,๊ธฐ๋Šฅ๋“ค์ด๋‹ค.
๋งŒ์•ฝ, ๊ฒŒ์‹œ๊ธ€ ๊ด€๋ จ ์œ ์ง€ ๋ณด์ˆ˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด ํ•ด๋‹น ํด๋”์—์„œ ๋ฐ”๋กœ
์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋ชฉ๋ก๊ด€๋ จ๋œ ์ฃผ์†Œ /boards , /products (๋ชฉ๋ก์ด๋‹ˆ๊นŒ s)
๋“ฑ๋กํ•˜๊ธฐ : /boards/new (boardsํ•˜๊ณ  new๋งŒ ์น˜๋ฉด ์ด๋™๋˜๋„๋ก)
์ƒ์„ธ๋ณด๊ธฐ : /boards/[boardId]
์‚ญ์ œํ•˜๊ธฐ : ํŽ˜์ด์ง€๋Š” ํ•„์š”์—†์Œ
์ˆ˜์ •ํ•˜๊ธฐ : /boards/[boardId]/edit

โœ… ๊ฒŒ์‹œ๊ธ€์„ ์ˆ˜์ •์‹œ ์ฃผ์†Œ๋Š” ์™œ boards/edit์ด ์•„๋‹๊นŒโ“

new ๊ฐ™์€ ๊ฒฝ์šฐ ์ƒˆ๋กœ์šด ๊ฒƒ์„ ๋งŒ๋“ฌ (๊ธฐ์กด์— 100๊ฐœ๋ผ๋ฉด 100++๊ฐœ)
๊ฒŒ์‹œ๊ธ€์„ ์ˆ˜์ •ํ• ๋•Œ๋Š” ํŠน์ • ๊ฒŒ์‹œ๊ธ€์„ ์ˆ˜์ •ํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ new์™€ ๋‹ค๋ฅด๊ฒŒ ํŠน์ • ๊ฒŒ์‹œ๊ธ€์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ๋“ค์–ด๊ฐ€์•ผ ํ•œ๋‹ค.
๋”ฐ๋ผ์„œ ์ˆ˜์ •ํŽ˜์ด์ง€๋Š” ํŠน์ • ๊ฒŒ์‹œ๋ฌผ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋Š” boards/[boardId]/edit ์œผ๋กœ ์ ์–ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

โœ… ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ์ž…๋ ฅ ์‹œ ์ฃผ์˜ ์ 

์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ง€๊ณ  ์˜ฌ ๋•Œ ์šฐ๋ฆฌ๋Š” public ํด๋”์— ๋‹ด๊ธด ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ง€๊ณ  ์˜จ๋‹ค.
๋”ฐ๋ผ์„œ ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•  ๋•Œ ์ฃผ์˜ํ•ด์„œ ์„ค์ •ํ•ด์•ผํ•œ๋‹ค.
<img src= โ€œ/์ด๋ฏธ์ง€ ๊ฒฝ๋กœโ€ /> ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ๋กœ์—์„œ ๋งจ ์ฒ˜์Œ/ ๋Š” public์„ ์˜๋ฏธํ•œ๋‹ค.


๐Ÿ’ก Nullish-coalescing

์•ž์—๊ฐ€ null๊ณผ undefined์ผ๋•Œ๋งŒ ๋ Œ๋”ํ•ด์ฃผ๋Š” ์—ฐ์‚ฐ์ž์ด๋‹ค.(ES11๋ฌธ๋ฒ•)

// data๊ฐ€ null ๋˜๋Š” undefined ์ผ ๋•Œ data.fetchProfile ๋ Œ๋”
data ?? data.fetchProfile
```<br>

โœ… ES๋ฌธ๋ฒ•์ด๋ž€?

ECMA Script์˜ ์•ฝ์ž๋กœ, ์ค‘๊ตฌ๋‚œ๋ฐฉ์ด๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ‘œ์ค€ํ™” ์‹œํ‚จ ๋ฌธ๋ฒ•.


๐Ÿ’ก ์‹ค๋ฌด์šฉ ํด๋”๊ตฌ์กฐ(container / presenter)

ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๋•Œ ํด๋” ๊ตฌ์กฐ๋Š” ๊ต‰์žฅํžˆ ์ค‘์š”ํ•จโ—๏ธโ—๏ธ
์‹ค๋ฌด์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํด๋” ๊ตฌ์กฐ์˜ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•๋“ค์„ ํŒจํ„ด์ด๋ผ๊ณ  ํ•œ๋‹ค.

๋ฆฌ์•กํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์œ ๋ช…ํ•œ ํŒจํ„ด์œผ๋กœ๋Š” container / presentational(๊ณ ์ •๋ฐฉ์‹) ํŒจํ„ด, hooks(์ตœ์‹ ๋ฐฉ์‹) ํŒจํ„ด, atomic(๋””์ž์ด๋„ˆ์™€ ํ˜‘์—…) ํŒจํ„ด์ด ์žˆ๋‹ค.

1๏ธโƒฃ container / presentational ํŒจํ„ด

: ์†Œ์Šค์ฝ”๋“œ๋ฅผ JS(๊ธฐ๋Šฅ)์™€ JSX (UI)๋กœ ๋‚˜๋ˆ„๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ,
container๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(๊ธฐ๋Šฅ) ๋ถ€๋ถ„์„ ์˜๋ฏธํ•˜๊ณ ,
presentational์€ JSX(UI) ๋ถ€๋ถ„์„ ์˜๋ฏธํ•œ๋‹ค.
-> ํŒŒ์ผ์„ ๋‚˜๋ˆด์–ด๋„ ์‹คํ–‰๋  ๋•Œ๋Š” ํ•˜๋‚˜๋กœ ํ•ฉ์ณ์ ธ์„œ ์‹คํ–‰๋˜์–ด์•ผ ํ•œ๋‹ค.
ํ•˜๋‚˜๋กœ ํ•ฉ์ณ์„œ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์— ์ž์‹์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒƒ์ด๋‹ค.

-> ๋‹ค๋ฅธ ์ด๋ฆ„๋ฐฉ์‹์œผ๋กœ ์ €์žฅ ๊ฐ€๋Šฅํ•จ.
BoardWritePresenter.js
BoardWrite-Presenter.js
BoardWrite.(ํ™•์žฅ์ž์˜ .์ด ์•„๋‹˜)Presenter.js-> ์œ„์™€ ๊ฐ™์ด ์ž์‹์ปดํฌ๋„ŒํŠธ์ธ presenter๋ฅผ ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์ธ container์— ๋ถˆ๋Ÿฌ์™€ ํ•˜๋‚˜๋กœ ํ•ฉ์ณ ์‹คํ–‰ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๋ฐ˜๋“œ์‹œ ๊ธฐ์–ตํ•ด์•ผํ•˜๋Š” ์ โ—๏ธ
ํŒŒ์ผ์€ ๋‘๊ฐœ๋กœ ๋‚˜๋‰˜์–ด์ ธ ์žˆ์ง€๋งŒ ์‹คํ–‰์‹œ์—๋Š” pages์—์„œ ํ•˜๋‚˜๋กœ ํ•ฉ์ณ์ ธ์„œ ์‹คํ–‰๋œ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ๋ธŒ๋ผ์šฐ์ €๋กœ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์ปดํฌ๋„ŒํŠธ๋Š” pages์— ์žˆ๋Š” index.js ๋ฟ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜๋กœ ํ•ฉ์ณ๋‘” container๋ฅผ pages์— ๊ฐ€์ง€๊ณ  ์™€์„œ import ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

2๏ธโƒฃ hooks ํŒจํ„ด

3๏ธโƒฃ atomic ํŒจํ„ด

atomic ํŒจํ„ด์ด๋ž€โ“
์ปดํฌ๋„ŒํŠธ์˜ ์ค‘๋ณต์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์•„์ฃผ ์ž‘์€ ์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„๋กœ ๋จผ์ € ์ชผ๊ฐœ๋Š” ๋ฐฉ๋ฒ•

์ด atoms, molecules, organisms, templates, pages์˜
5๊ฐœ์˜ ํด๋” ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ ธ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค.
๋˜ํ•œ, ๊ฐ๊ฐ์˜ ์˜๋ฏธ๋Š” ํ™”ํ•™์˜ ์›๋ฆฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋งŒ๋“ ๋‹ค.
atomic ํŒจํ„ด์€ ๋””์ž์ด๋„ˆ๋ถ„๋“ค์˜ ์„ธ๊ณ„์—์„œ๋„ ๋„๋ฆฌ ์•Œ๋ ค์ง„ ํŒจํ„ด์œผ๋กœ
๋””์ž์ด๋„ˆ์™€์˜ ํ˜‘์—…์— ์œ ๋ฆฌํ•ด์งˆ ์ˆ˜ ์žˆ๊ณ ,
ํ”„๋กœ์ ํŠธ ์‹œ์ž‘๋ถ€ํ„ฐ ์ฒด๊ณ„์ ์ธ UI์  ์„ค๊ณ„๊ฐ€ ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

ํ•˜์ง€๋งŒ, ํ”„๋กœ์ ํŠธ ์‹œ์ž‘๋ถ€ํ„ฐ UI๋ฅผ ๋””์ž์ด๋„ˆ๋ถ„๊ณผ ํ•จ๊ป˜ ์ „์ฒด์ ์œผ๋กœ ์„ค๊ณ„ํ•ด์•ผํ•˜๋ฏ€๋กœ ์‹ค์ œ ๊ฐœ๋ฐœ์ค€๋น„๊นŒ์ง€ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋‹ค.
๋”ฐ๋ผ์„œ, ์‹œ๊ฐ„, ๋น„์šฉ, ํŒ€์˜ ์ƒํ™ฉ ๋“ฑ์— ๋”ฐ๋ผ์„œ ์ ์šฉํ•ด์•ผํ•œ๋‹ค.

โœ… Atomic ํŒจํ„ด์˜ ์žฅ์ ๊ณผ ๋‹จ์ 

https://ui.toast.com/weekly-pick/ko_20200213
https://brunch.co.kr/@skykamja24/580


๐Ÿ’ก props

props๋ž€ ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ž์‹ ์ปดํฌ๋„ŒํŠธ์—๊ฒŒ ๋ฌผ๋ ค์ฃผ๋Š” ๋ณ€์ˆ˜/ํ•จ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
์ปดํฌ๋„ŒํŠธ๋ฅผ ํด๋” 2๊ฐœ๋กœ ๋‚˜๋ˆ„๋ฉด์„œ ๋ฐ์ดํ„ฐ์™€ ๊ธฐ๋Šฅ์˜ ์—ฐ๊ฒฐ๊ณ ๋ฆฌ๊ฐ€ ๋Š์–ด์ง€๊ฒŒ ๋œ๋‹ค.
์ด๊ฒƒ์„ props๊ฐ€ ์žฌ์—ฐ๊ฒฐํ•ด์ฃผ๊ฒŒ ๋˜๊ณ ,
๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๊ฐ€ props๋ฅผ ๋ฌผ๋ ค์ค„๋•Œ๋Š” {๊ฐ์ฒด}๋กœ ๋ฌถ์–ด์„œ ๋„˜๊ธฐ๊ฒŒ ๋œ๋‹ค.

โœ… props ๋‚ด๋ ค์ฃผ๊ธฐ _ ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ

//๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ _ container ๋ถ€๋ถ„
const BoardWrite = ()=>{
	const [writer, setWriter ] = useState()
	const handlechangeWriter = (e)=>{
				writer = e.target.value
				setWriter(writer)
				}
	return(
		// ์ž์‹ ์ปดํฌ๋„ŒํŠธ _ presenter ์ปดํฌ๋„ŒํŠธ 
		// ๋ณธ๊ฒฉ์ ์œผ๋กœ props๋ฅผ ๋‚ด๋ ค์ฃผ๋Š” ๋ถ€๋ถ„
		<BoardWriteUI propsName={handlechangeWriter}/>
	)
}

-> props๋ฅผ ๋„˜๊ธฐ๊ฒŒ ๋˜๋ฉด,
props = { propsName : handlechangeWriter } ๊ฐ์ฒดํ˜•ํƒœ๋กœ ๋„˜์–ด๊ฐ€๊ฒŒ ๋œ๋‹ค.
๋˜ํ•œ props๋Š” ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ๋‚ด๋ ค ์ค„ ์ˆ˜ ์žˆ๋‹ค.

โœ… props ๋ฐ›์•„์˜ค๊ธฐ

//์ž์‹์ปดํฌ๋„ŒํŠธ _ presenter ๋ถ€๋ถ„
//ํŒŒ๋ผ๋ฏธํ„ฐ ๋ถ€๋ถ„์— props๋ฅผ ์ ์–ด์ฃผ์…”์•ผ ๋ฐ›์•„ ์˜ฌ ์ˆ˜ ์žˆ๋‹ค!!!
const BoardWriteUI = (props)=>{
		return(
			<Wrapper>
				<Writer
					type = "text"
					placeholder = "์ž‘์„ฑ์ž๋ฅผ ์ ์–ด์ฃผ์„ธ์š”"
					// ๋ณธ๊ฒฉ์ ์œผ๋กœ props๋ฅผ ๋‚ด๋ ค๋ฐ›๋Š” ๋ถ€๋ถ„
					onChange = {props.propsName}
					/>
			</Wrapper>
		)
}

-> ํŒŒ๋ผ๋ฏธํ„ฐ ๋ถ€๋ถ„์— props๋ฅผ ์ ์ง€ ์•Š์œผ๋ฉด ๋ฐ›์•„ ์˜ฌ ์ˆ˜ ์—†์œผ๋‹ˆ ์ฃผ์˜โ—๏ธ
๊ฐ์ฒด๋กœ ๋„˜์–ด์˜ค๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ›์•„์˜จ props๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๊ฐ์ฒด์˜ ์†์„ฑ์„ ๊บผ๋‚ด์˜ค๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
๋”ฐ๋ผ์„œ props.propsName ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

โœ… ๋ฆฌ์•กํŠธ์˜ ๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ๋ฆ„

๋ฆฌ์•กํŠธ๋Š” ๋‹จ๋ฐฉํ–ฅ ๊ตฌ์กฐ๋กœ์„œ, props๋Š” ๋ถ€๋ชจ๊ฐ€ ์ž์‹์—๊ฒŒ๋งŒ ์ค„ ์ˆ˜ ์žˆ๊ณ , ์ž์‹์ด ๋ถ€๋ชจ์—๊ฒŒ ์ค„ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.
๋”ฐ๋ผ์„œ, ์—๋Ÿฌ๋ฅผ ์บ์น˜ํ•˜๊ธฐ๊ฐ€ ๋” ์‰ฝ๊ณ  ๋ณด๊ธฐ์—๋„ ๊น”๋”ํ•˜๋‹ค.

โ–บ ์‹ค์Šตํ•ด๋ณด๊ธฐ

-> graphql ๊ณผ emotion๋„ ๋”ฐ๋กœ ํŽ˜์ด์ง€๋ฅผ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Œ.
ํ•˜์ง€๋งŒ graphql์€ ์ปดํฌ๋„ŒํŠธ ๊ฐœ๋…์ด ์•„๋‹˜, ์•„๋ฌด๋•Œ๋‚˜ import,export๋กœ ๊บผ๋‚ด์˜ฌ ์ˆ˜ ์žˆ์Œ.


๐Ÿ’ก export vs export default

import ํ•ด์˜ฌ ๋•Œ ์ค‘๊ด„ํ˜ธ ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐ๋ฆฌ๊ณ  ์˜ค๋Š” ๊ฒƒ์ด ์žˆ๊ณ , ์ค‘๊ด„ํ˜ธ ์—†์ด ๋ฐ๋ฆฌ๊ณ  ์˜ค๋Š” ๊ฒƒ ์ด ์žˆ๋‹ค.
์ค‘๊ด„ํ˜ธ์˜ ์‚ฌ์šฉ ์—ฌ๋ถ€๋Š” export๋ฅผ ํ•˜๋ƒ export default๋ฅผ ํ•˜๋Š๋ƒ์— ๋”ฐ๋ผ ๊ฒฐ์ •๋œ๋‹ค.

export๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ํ•œ ์ปดํฌ๋„ŒํŠธ ๋‚ด์—์„œ ์—ฌ๋Ÿฌ๊ฐœ๋ฅผ ๋‚ด๋ณด๋‚ด๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•ด ํ•„์š”ํ•œ ๊ฒƒ๋“ค๋งŒ importํ•œ๋‹ค.
ํ•˜์ง€๋งŒ export default๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ํ•œ ์ปดํฌ๋„ŒํŠธ์—์„œ ํ•œ๊ฐœ๋งŒ ๋‚ด๋ณด๋‚ด๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  importํ•˜๊ฒŒ ๋œ๋‹ค.

โœ… ํ•œ๋ˆˆ ์ •๋ฆฌ

  • export
    • ์ค‘๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•ด์„œ import ํ•ด์˜จ๋‹ค.
    • ํ•œ ์ปดํฌ๋„ŒํŠธ ๋‚ด์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ๋‚ด๋ณด๋‚ผ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
    • import ํ•ด์˜ฌ ๋•Œ๋Š” exportํ•œ ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ๋ถˆ๋Ÿฌ์™€์•ผ ํ•œ๋‹ค.
    • ํ•œ๋ฒˆ์— ๋ฌถ์–ด์„œ import ํ•  ์‹œ์—๋Š” import * as S from โ€˜๊ฒฝ๋กœโ€™ ๋ฅผ ์ด์šฉํ•œ๋‹ค.
  • export default
    • ์ค‘๊ด„ํ˜ธ ์—†์ด import ํ•ด์˜จ๋‹ค.
    • import ํ•ด์˜ฌ ๋•Œ export ํ•œ ์ด๋ฆ„์ด ์•„๋‹ˆ์–ด๋„ ์ƒ๊ด€์—†๋‹ค.
      • ํ•œ ์ปดํฌ๋„ŒํŠธ์—์„œ ํ•œ๊ฐœ๋งŒ exportํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋งŒ ์ œ๋Œ€๋กœ ์ง€์ •๋˜๋ฉด ์ด๋ฆ„์ด ์–ด๋–ค๊ฒƒ์ด๋“  ์ƒ๊ด€์—†์ด ์ž˜ ๋ถˆ๋Ÿฌ์˜จ๋‹ค.



๐Ÿฅš MEMO

  1. ES๋ฌธ๋ฒ• ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ๋ณดํ†ต es5,6,7 ์ •๋„๋Š” ์ˆ™์ง€ํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  2. ํฐ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•  ๋•Œ ํด๋”์™€ ํŒŒ์ผ์„ ์—ฌ๋Ÿฌ๊ฐœ๋กœ ๋‚˜๋ˆ ์„œ ์ž‘์—…ํ•˜๊ฒŒ ๋œ๋‹ค. -> ๊ด€๋ฆฌํ•˜๊ธฐ ๋” ํšจ์œจ์ 
  3. ์ž˜๊ฒŒ ์ชผ๊ฐ  ํŒŒ์ผ๋“ค(๋ถ€๋ชจ์™€ ์ž์‹)๋ผ๋ฆฌ ๋ณ€์ˆ˜๋ž‘ ์Šคํ…Œ์ดํŠธ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.(ํŒŒ์ผ์„ ๋‚˜๋ˆ”์œผ๋กœ์จ ์—ฐ๊ฒฐ์ด ๋Š์–ด์ง ์žฌ์—ฐ๊ฒฐ์ด ํ•„์š”ํ•จ)
  4. probs๋ฅผ ํ†ตํ•ด ๊ณต์œ ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฉฐ key์™€ value์˜ ๊ฐ์ฒดํ˜•ํƒœ๋กœ
    ๋‚ด๋ถ€์˜ ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜๋ฅผ ๋ฌผ๋ ค์ค€๋‹ค.
  5. ๋ฐ˜๋Œ€๋กœ ์ž์‹์ด ๋ถ€๋ชจ์—๊ฒŒ ์ฃผ๋Š” ๊ฒƒ์€ ๋ฆฌ์•กํŠธ์˜ ๊ณ ์œ ํŠน์„ฑ์ƒ ๊ฐ€๋Šฅํ•˜์ง€ ์•Š๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ€๋Šฅํ•œ ๊ผผ์ˆ˜๊ฐ€ ์žˆ์Œ!
  6. ๋‘๋ฒˆ์ด์ƒ ์“ฐ์ด๋Š” ์•„์ด๋“ค ๋ฒ„ํŠผ ๋“ฑ์€ ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธํŒŒ์ผ์„ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด์คŒ.

๐Ÿฅš Q&A

hooks ํŒจํ„ด์€ ์–ด๋–ค ์‹์œผ๋กœ ์ ์šฉ๋˜๋Š” ์ง€ ๊ถ๊ธˆํ•˜๋‹ค.

๐Ÿฅš ์˜ค๋Š˜์˜ ํšŒ๊ณ 

์˜ค๋Š˜์€ ์ปจ๋””์…˜์ด ๊ทธ๋ ‡๊ฒŒ ์ข‹์ง€ ์•Š์€ ํ•˜๋ฃจ์˜€๋‹ค,,
์ฒ˜์Œ์œผ๋กœ ์ˆ˜์—… ์ค‘์— ๊พธ๋ฒ… ์กธ๊ธฐ๋„ ํ–ˆ๋‹คใ… ,,
๊ทธ๋ž˜์„œ ๊ทธ๋Ÿฐ์ง€ ๊ณผ์ œํ•˜๋ฉด์„œ๋„ ์ฃผ์˜ฅ๊ฐ™์€ ์‹ค์ˆ˜๋ฅผ ๋งŽ์ดํ–ˆ๋‹ค^^
์–ด์ œ ๋ถ„๋ช…ํžˆ ๋ฐ์ดํ„ฐ๊ฐ€ ์ž˜ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ๊นŒ์ง€ ํ™•์ธํ•˜๊ณ  ์บก์ณํ•ด์„œ
์ œ์ถœ๊นŒ์ง€ ํ–ˆ๋Š”๋ฐ, fetchProduct๋กœ ์ฟผ๋ฆฌ์กฐํšŒ๋ฅผ ํ–ˆ๋”๋‹ˆ ์ƒํ’ˆ๋‚ด์šฉ์ธ detail๋งŒ ๋ถˆ๋Ÿฌ์™€์ง€์ง€ ์•Š์•˜๋‹ค,,,
์ƒํ’ˆ๋‚ด์šฉ์ด ๋‚˜์˜ค์ง€ ์•Š์Œใ… ใ… 
์•Œ๊ณ ๋ณด๋‹ˆ name์ด ์•„๋‹Œ contents๋ผ๊ณ  ๋„ฃ์–ด์„œ ๊ทธ๋Ÿฐ๊ฑฐ์˜€๋Š”๋ฐ
์™œ contents๋ผ๊ณ  ์ฐฉ๊ฐ์„ ํ–ˆ๋Š”์ง€
์ง„์งœ ๊ฐ„๋‹จํ•œ ๊ฑด ๋ฐ ๊ทธ๊ฑธ ํ•˜๋‚˜ ๋ชป์ฐพ์•„์„œ ์œผํœด,,,
๊ฒฐ๊ตญ ๊นƒํ—ˆ๋ธŒ์˜ question table์„ ์ด์šฉํ–ˆ๊ณ ,
๋Šฆ์€ ์‹œ๊ฐ„์ด๋ผ ๊ณผ์—ฐ ๋‹ต๋ณ€์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์„๊นŒ ๊ฑฑ์ •ํ–ˆ๋Š”๋ฐ
์–ด๋–ค ๋ถ„๊ป˜์„œ ์˜คํƒ€๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค๊ณ  ์•Œ๋ ค์ฃผ์‹  ๋•๋ถ„์— ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค,,ํ™ํ™,,๋ชจ๋ž˜๋ชจ๋ž˜,,์ž๊ฐˆ์ž๊ฐˆ
๋Š˜ ๋ณด๋ฉด ์‚ฌ์†Œํ•œ ์‹ค์ˆ˜๋ฅผ ์ž์ฃผ ํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค,,
์—๋Ÿฌ๋ฅผ ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ์žก์„ ์ˆ˜๋ก ์ข‹๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ,,,,
๋‚ด์ผ ์ข€ ๋” ์ •์‹  ๋ฐ”์ง ์ฐจ๋ฆฌ๊ณ  ์ฐจ๊ทผ์ฐจ๊ทผ ํ•˜๋‚˜์”ฉ ํ•ด๋ณด์ž!
๊ทธ๋ž˜๋„ ๊ฒฐ๊ตญ ํ•ด๋ƒˆ์œผ๋‹ˆ๊นŒ ์ธ์ฆ๐Ÿฅน

profile
JUST DO WHATEVER

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