[React] React Router Dom

๊ถŒ์šฉ์ค€ยท2023๋…„ 12์›” 6์ผ
0
post-thumbnail

React Router Dom

๐Ÿ“Œ ์ •์˜

React Router Dom์„ ์‚ฌ์šฉํ•˜๋ฉด ์›น ์•ฑ์—์„œ ๋™์  ๋ผ์šฐํŒ…์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ผ์šฐํŒ…์ด ์‹คํ–‰ ์ค‘์ธ ์•ฑ ์™ธ๋ถ€์˜ ๊ตฌ์„ฑ์—์„œ ์ฒ˜๋ฆฌ๋˜๋Š” ๊ธฐ์กด ๋ผ์šฐํŒ… ์•„ํ‚คํ…์ฒ˜์™€ ๋‹ฌ๋ฆฌ React Router DOM์€ ์•ฑ ๋ฐ ํ”Œ๋žซํผ์˜ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋”ฐ๋ผ ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ…์„ ์šฉ์ดํ•˜๊ฒŒ ํ•œ๋‹ค.

๋ฆฌ์•กํŠธ๋Š” SPA์ด๊ธฐ ๋–„๋ฌธ์— ํ•˜๋‚˜์˜ index.html ํ…œํ”Œ๋ฆฟ ํŒŒ์ผ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ ์ด ํ•˜๋‚˜์˜ ํ…œํ”Œ๋ฆฟ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•ด์„œ ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ด index.html ํ…œํ”Œ๋ฆฟ์— ๋„ฃ์œผ๋ฏ€๋กœ ํŽ˜์ด์ง€๋ฅผ ๋ณ€๊ฒฝํ•ด์ฃผ๊ฒŒ ๋œ๋‹ค. ์ด ๋–„ ์ด React Router DOM ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ƒˆ ์ปดํฌ๋„ŒํŠธ๋กœ ๋ผ์šฐํŒ…/ํƒ์ƒ‰์„ ํ•˜๊ณ  ๋ Œ๋”๋งํ•˜๋Š”๋ฐ ๋„์›€์„ ์ฃผ๊ฒŒ ๋œ๋‹ค.

โ—๏ธํŠน์ง•

- ์ค‘์ฒฉ ๋ผ์šฐํŒ…(Nested Routes)

์ด๊ฒƒ์€ React Router์˜ ๊ฐ€์žฅ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ ๋ณต์žกํ•œ ๋ ˆ์ด์•„์›ƒ ์ฝ”๋“œ๋ฅผ ์–ด์ง€๋Ÿฝํž ํ•„์š”๊ฐ€ ์—†๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๋ ˆ์ด์•„์›ƒ์€ URL์˜ ์„ธ๊ทธ๋จผํŠธ์— ์—ฐ๊ฒฐ๋˜๋ฉฐ React Router๋Š” ์ด๋ฅผ ์™„์ „ํžˆ ์ˆ˜์šฉํ•œ๋‹ค.

- Outlet

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

- useNavigate

๊ฒฝ๋กœ๋ฅผ ๋ฐ”๊ฟ”์ค€๋‹ค.

- useParams

:style ๋ฌธ๋ฒ•์„ path ๊ฒฝ๋กœ์— ์‚ฌ์šฉํ•˜์˜€๋‹ค๋ฉด useParams()๋กœ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜๋Š” :invoiceId๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ๊ธฐ์œ„ํ•ด usePrams๋ฅผ ์‚ฌ์šฉ

- useLocation

์ด Hooks ๋Š” ํ˜„์žฌ ์œ„์น˜ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ํ˜„์žฌ ์œ„์น˜๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ์ผ๋ถ€ side effect๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์— ์œ ์šฉํ•˜๋‹ค.

- useRoutes

์—…๋กœ๋“œ์ค‘..

useRoutes Hooks๋Š” ์™€ ์™€ ๊ธฐ๋Šฅ์ ์œผ๋กœ ๋™์ผํ•˜์ง€๋งŒ ์š”์†Œ ๋Œ€์‹  JavaScript ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฝ๋กœ๋ฅผ ์ •์˜ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฐ์ฒด๋Š” ์ผ๋ฐ˜ ์š”์†Œ์™€ ๋™์ผํ•œ ์†์„ฑ์„ ๊ฐ–์ง€๋งŒ JSX๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค.
profile
Brendan Eich, Jordan Walke, Evan You, ๊ถŒ์šฉ์ค€

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