Daily/Today I Learned

22.07.28_TIL

ํ˜ธ๋ฐ€์ด 2022. 7. 28. 01:41

๐Ÿ“Œ ์–ด์ œ ์ €๋…์— ๊ฐ์ข… API๋ฅผ ์‹ค์Šต์„ ์ง„ํ–‰ํ–ˆ๋‹ค. ์œ ํŠœ๋ธŒ, ๊ณต๊ณต๋ฐ์ดํ„ฐ ํฌํ„ธ, vworld ๋“ฑ์€ proxy ์„ค์ •์—†์ด API๋ฅผ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ ๋„ค์ด๋ฒ„ ๊ฒ€์ƒ‰ API๋ฅผ ๊ฐ€์ ธ์˜ฌ ๊ฒฝ์šฐ package.json์— proxy ์„ค์ •์„ ํ•ด์•ผ CORS ์˜ค๋ฅ˜๊ฐ€ ์‚ฌ๋ผ์ง€๋ฉฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์˜ค๋Š˜์€ Custom Hooks๋ฅผ ํ•™์Šตํ•˜๋Š” ๋‚ ์ด๋‹ค. ๋ฐ˜๋ณต๋˜๋Š” ๋ฃ†ใ„ฑ์„ ํ•จ์ˆ˜๋กœ ๋งŒ๋“ค์–ด ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋ผ๊ณ  ์ ํ˜€์žˆ๋Š”๋ฐ ์–ด๋–ค ๊ฒƒ์ธ์ง€ ์ •ํ™•ํžˆ ํ•™์Šต์„ ์ง„ํ–‰ํ•ด๋ณด์ž!!

๐Ÿ“— ์˜ค๋Š˜ ํ•™์Šตํ•œ ๋‚ด์šฉ

Custom Hooks

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

Custom Hook ์ •์˜ ๊ทœ์น™

  • Custom Hook์„ ์ •์˜ํ•  ๋•Œ๋Š” ํ•จ์ˆ˜ ์ด๋ฆ„ ์•ž์— use๋ฅผ ๋ถ™์ด๋Š” ๊ฒƒ์ด ๊ทœ์น™์ด๋‹ค.
  • ๋Œ€๊ฐœ์˜ ๊ฒฝ์šฐ ํ”„๋กœ์ ํŠธ ๋‚ด์˜ hooks ๋””๋ ‰ํ† ๋ฆฌ์— Custom Hook์„ ์œ„์น˜ ์‹œํ‚จ๋‹ค.
  • Custom Hook์œผ๋กœ ๋งŒ๋“ค ๋•Œ ํ•จ์ˆ˜๋Š” ์กฐ๊ฑด๋ถ€ ํ•จ์ˆ˜๊ฐ€ ์•„๋‹ˆ์–ด์•ผ ํ•œ๋‹ค. return ํ•˜๋Š” ๊ฐ’์€ ์กฐ๊ฑด๋ถ€์—ฌ์„œ๋Š” ์•ˆ๋œ๋‹ค.

์ฝ”๋“œ ๋ถ„ํ• (Code Spliting)

  • ์ฝ”๋“œ๋ฅผ ํ•ด์„ํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ์ •๋„๊ฐ€ ๋Š๋ ค์กŒ๋Š”์ง€ ํŒŒ์•…ํ•ด์„œ ๋ฒˆ๋“ค์„ ๋‚˜๋ˆˆ ๋’ค์— ์ง€๊ธˆ ํ•„์š”ํ•œ ์ฝ”๋“œ๋งŒ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ๋‚˜์ค‘์— ํ•„์š”ํ•œ ์ฝ”๋“œ๋Š” ๋‚˜์ค‘์— ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋„๋กํ•˜๋Š” ๊ฐœ๋…์ด๋‹ค.
  • ๋ฒˆ๋“ค์ด ๊ฑฐ๋Œ€ํ•ด์ง€๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์ข‹์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๋ฒˆ๋“ค์„ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์ด๋‹ค.
  • ๋Ÿฐํƒ€์ž„ ์‹œ ์—ฌ๋Ÿฌ ๋ฒˆ๋“ค์„ ๋™์ ์œผ๋กœ ๋งŒ๋“ค๊ณ  ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒƒ์œผ๋กœ, Webpack, Rollup๊ณผ ๊ฐ™์€ ๋ฒˆ๋“ค๋Ÿฌ๊ฐ€ ์ง€์›ํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.
  • ํŽ˜์ด์ง€์˜ ๋กœ๋”ฉ ์†๋„๋ฅผ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฒˆ๋“ค ๋ถ„ํ•  ์ค„์ด๋Š”๋ฒ•

  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ „์ฒด์ ์œผ๋กœ ๋ถˆ๋Ÿฌ์™€์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ํ•„์š”ํ•œ ๋ฉ”์†Œ๋“œ๋งŒ ๋ถˆ๋Ÿฌ์™€์„œ ์‚ฌ์šฉํ•˜์—ฌ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ๋‹ค.
// lodash ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ „์ฒด ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
import _ from 'lodash';

// lodash ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๋ฉ”์†Œ๋“œ ํ•˜๋‚˜๋ฅผ ๋ถˆ๋Ÿฌ์™€ ์‚ฌ์šฉ
import find from 'lodash/find';

React์—์„œ์˜ ์ฝ”๋“œ ๋ถ„ํ• 

  • SPA์—์„œ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ๊นŒ์ง€ ํ•œ ๋ฒˆ์— ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๋•Œ๋ฌธ์— ์ฒซ ํ™”๋ฉด์ด ๋ Œ๋”๋ง ๋ ๋•Œ๊นŒ์ง€์˜ ์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ฆฌ๋Š” ๊ฒƒ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ ๋ถ„ํ•  ๊ฐœ๋…์„ ๋„์ž…ํ–ˆ๋‹ค.

Static Import

  • ๊ธฐ์กด import ๊ตฌ๋ฌธ์€ ๋ฌธ์„œ์˜ ์ƒ์œ„์— ์œ„์น˜ํ•ด์•ผ ํ•˜๊ณ , ๋ธ”๋ก๋ฌธ ์•ˆ์—์„œ๋Š” ์œ„์น˜ํ•  ์ˆ˜ ์—†๋Š” ์ œ์•ฝ ์‚ฌํ•ญ์ด ์žˆ์—ˆ๋‹ค.

Dynamic Import

  • ๊ตฌ๋ฌธ ๋ถ„์„ ๋ฐ ์ปดํŒŒ์ผํ•ด์•ผ ํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ์˜ ์–‘์„ ์ตœ์†Œํ™” ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ๊ตฌ๋ฌธ์ž…๋‹ˆ๋‹ค.
  • ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ Import ๋ฌธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • React.lazy์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

React.lazy()

  • dynamic import๋ฅผ ์‚ฌ์šฉํ•ด ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ Œ๋”๋ง ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ดˆ๊ธฐ ๋ Œ๋”๋ง ์ง€์—ฐ์‹œ๊ฐ„์„ ์–ด๋Š์ •๋„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.
  • React.lazy๋กœ ๊ฐ์‹ผ ์ปดํฌ๋„ŒํŠธ๋Š” ๋‹จ๋…์œผ๋กœ ์“ฐ์ผ ์ˆ˜ ์—†๊ณ , React.suspense ์ปดํฌ๋„ŒํŠธ์˜ ํ•˜์œ„์—์„œ ๋ Œ๋”๋ง ํ•ด์•ผํ•œ๋‹ค.
import Component from './Component';

const Component = React.lazy(() => import('./Component'));

React.Suspense

  • Router๋กœ ๋ถ„๊ธฐ๊ฐ€ ๋‚˜๋ˆ„์–ด์ง„ ์ปดํฌ๋„ŒํŠธ๋“ค์€ lazy๋ฅผ ํ†ตํ•ด importํ•˜๋ฉด ํ•ด๋‹น path๋กœ ์ด๋™ํ• ๋•Œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ฒŒ ๋˜๋ฉฐ ๋กœ๋”ฉํ•˜๋Š” ์‹œ๊ฐ„์ด ์ƒ๊ธฐ๊ฒŒ ๋œ๋‹ค.
  • ์•„์ง ๋ Œ๋”๋ง์ด ์ค€๋น„๋˜์ง€ ์•Š์€ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์žˆ์„ ๋•Œ ๋กœ๋”ฉํ™”๋ฉด์„ ๋ณด์—ฌ์ฃผ๊ณ , ๋กœ๋”ฉ์ด ์™„๋ฃŒ๋˜๋ฉด ๋ Œ๋”๋ง์ด ์ค€๋น„๋œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.

React.lazy์™€ Suspense์˜ ์ ์šฉ

  • ์ค‘๊ฐ„์— ์ ์šฉ์‹œํ‚ค๋Š” ๊ฒƒ๋ณด๋‹ค๋Š” ์›น ํŽ˜์ด์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ์ง„์ž…ํ•˜๋Š” ๋‹จ๊ณ„์ธ Route์— ์ด ๋‘ ๊ธฐ๋Šฅ์„ ์ ์šฉ์‹œํ‚ค๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

๐Ÿ“˜ ์ถ”๊ฐ€๋กœ ๊ณต๋ถ€ํ•  ๋‚ด์šฉ

[udemy] React ์™„๋ฒฝ ๊ฐ€์ด๋“œ ๊ฐ•์˜ ๋ณด๊ธฐ (๋งค์ผ ์กฐ๊ธˆ์”ฉ ์ด๋ผ๋„ ๊พธ์ค€ํžˆ ๋“ฃ๊ธฐ)

Study์›๊ณผ ํ•จ๊ป˜ ์ง„ํ–‰์ค‘์ธ ํ”„๋กœ์ ํŠธ ๊ตฌํ˜„

  • Authentication

๐Ÿ“ ์ค‘์š”ํ•œ ๋‚ด์šฉ

  • Custom Hook
  • Custom Hook ์ƒ์„ฑ์กฐ๊ฑด
  • ์ฝ”๋“œ๋ถ„ํ• 
  • React.lazy
  • React.Suspense

'Daily > Today I Learned' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

22.08.02_TIL  (0) 2022.08.02
22.08.01_TIL  (0) 2022.08.01
22.07.27_TIL  (0) 2022.07.27
22.07.26_TIL  (0) 2022.07.26
22.07.25_TIL  (0) 2022.07.25