1. Routing

ํ•˜๋‚˜์˜ ์›นํŽ˜์ด์ง€๋ฅผ ํ•˜๋‚˜์˜ ์ปดํฌ๋„ŒํŠธ๋กœ ๋งŒ๋“ค๊ณ  URL์— ๋”ฐ๋ผ์„œ ์ ์ ˆํ•œ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ณด์ด๊ฒŒ ํ•จ

window.location.pathname์œผ๋กœ URL ๋’ค์— ๋ถ™๋Š” path๋ฅผ ๊ฐ€์ ธ์™€์„œ ๊ทธ์— ๋งž๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ Œ๋”๋งํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Œ

Window.location

  • ๊ฐ์ฒด๊ฐ€ ์—ฐ๊ฒฐ๋œ ์žฅ์†Œ(URL)์„ ํ‘œํ˜„ํ•˜๋Š” location ์˜ค๋ธŒ์ ํŠธ์— ์ ‘๊ทผ

  • host๋ช…, ๋„๋ฉ”์ธ, ํฌํŠธ๋ฒˆํ˜ธ, path name ๋“ฑ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Œ

  • location.pathname : URL / ๋’ท ๋ถ€๋ถ„ ๊ฒฝ๋กœ๋ฅผ ๊ฐ€์ ธ์˜ด

์ถ”๊ฐ€๋กœ ์ฐพ์•„๋ณธ ๊ฒƒ

const pages : Record<string, React.FC> = {
  '/': HomePage,
  '/about': AboutPage,
};

export default function App() {
  const path = window.location.pathname;

  // const Page = pages[path] || HomePage;
  const Page = Reflect.get(pages, path) || HomePage;
  // ...

์ธ๋ฑ์Šค ์‹œ๊ทธ๋‹ˆ์ฒ˜์™€ Record

  • ์ธ๋ฑ์Šค ์‹œ๊ทธ๋‹ˆ์ฒ˜ : ๋Œ€๊ด„ํ˜ธ๋กœ ๊ฐ์ฒด๋ฅผ ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•

type humanInfo = {
  [name: string]: number
};

let human:humanInfo = {
  'ํ™๊ธธ๋™': 20,
  '๋‘˜๋ฆฌ': 30,
  '๋งˆ์ด์ฝœ': 40
};

์œ„์˜ ์˜ˆ์ œ๋Š” Record Type์œผ๋กœ๋„ ์ž‘์„ฑ ๊ฐ€๋Šฅ

type humanInfo = Record<string, number>

let human:humanInfo = {
  'ํ™๊ธธ๋™': 20,
  '๋‘˜๋ฆฌ': 30,
  '๋งˆ์ด์ฝœ': 40
};

์ธ๋ฑ์Šค ์‹œ๊ทธ๋‹ˆ์ฒ˜๋Š” ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์„ Key๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€๋งŒ Record Type์€ Key๋กœ ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์„ ํ—ˆ์šฉ

type humanInfo = {
  [name: 'ํ™๊ธธ๋™' | '๋‘˜๋ฆฌ' | '๋งˆ์ด์ฝœ']: number // Error
};

type names = 'ํ™๊ธธ๋™' | '๋‘˜๋ฆฌ' | '๋งˆ์ด์ฝœ';

type humanInfo = Record<names, number>

let human:humanInfo = {
  'ํ™๊ธธ๋™': 20,
  '๋‘˜๋ฆฌ': 30,
  '๋งˆ์ด์ฝœ': 40
};

๋Š๋‚€์ 

๋ฆฌ์•กํŠธ ๋ผ์šฐํ„ฐ๋ฅผ ๊ฐ„๋‹จํžˆ ์‚ฌ์šฉํ•ด๋ณธ ์ ์€ ์žˆ์œผ๋‚˜ ํ•œ๋ฒˆ๋„ ์–ด๋–ค์‹์œผ๋กœ URL์— ๋”ฐ๋ฅธ ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š”์ง€ ์ƒ๊ฐํ•ด ๋ณธ ์ ์ด ์—†์—ˆ๋‹ค. ์ด๋ฒˆ ๊ธฐํšŒ์— ์–ด๋ ต์ง€ ์•Š์€ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฑธ ์•Œ๊ฒŒ ๋˜์—ˆ๊ณ , ๋‹จ์ง€ path์— ๋งž๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง ํ•ด์ค„ ๋ฟ์ธ๋ฐ ๋ฆฌ์•กํŠธ ๋ผ์šฐํ„ฐ๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์“ฐ๋Š” ์ด์œ ๊ฐ€ ๋” ๊ถ๊ธˆํ•ด์กŒ๋‹ค. (1๊ฐ• ๊ฐ•์˜๋ฅผ ํ†ตํ•ด ์œ ์ถ”ํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์€ ํ…Œ์ŠคํŠธ์˜ ์šฉ์ด์„ฑ๋„ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.) ์•„๋งˆ ์ด๋ถ€๋ถ„์€ ๋‹ค์Œ ๊ฐ•์˜์—์„œ ๊ณง ์•Œ๊ฒŒ๋  ๊ฒƒ ๊ฐ™๋‹ค.

Last updated