React Router
νμ΅ ν€μλ
Router
React Router
BrowserRouter
history API
Routes
Route
MemoryRouter
λμ λΌμ°ν
URL Parameter
useParams
Query String
useSearchParams
μ»΄ν¨ν° λ€νΈμν¬ κ°μ λ°μ΄ν° ν¨ν·μ μ μ‘νλ λ€νΈμν¬ μ₯μΉλ€.
μ¦, μλ‘ λ€λ₯Έ λ€νΈμν¬ κ°μ μ΅μ μ κ²½λ‘λ₯Ό μ°Ύμλ΄λ μκ³ λ¦¬μ¦μ νμ©ν΄ μ€κ³ μν μ ν΄μ£Όλ μ₯μΉλ€.
React Router
Reactμμ μ£Όμ(URL)μ λ°λ₯Έ μ»΄ν¬λνΈ λ λλ§μ κ΄λ¦¬νκΈ° μν λΌμ΄λΈλ¬λ¦¬
Context APIλ₯Ό κΈ°λ°μΌλ‘ ν λΌμ΄λΈλ¬λ¦¬
π€ μ React Router μ μ¬μ©ν΄μΌ νλκ°?
μΉ μ ν리μΌμ΄μ μμ λΌμ°ν μ΄λΌλ κ°λ μ μ¬μ©μκ° μμ²ν URLμ λ°λΌ μλ§λ νμ΄μ§λ₯Ό 보μ¬μ£Όλ κ²μ μλ―Ένλ€. μΉ μ ν리μΌμ΄μ μ λ§λ€λ νλ‘μ νΈλ₯Ό νλμ νμ΄μ§λ‘ ꡬμ±ν μλ μκ³ , μ¬λ¬ νμ΄μ§λ₯Ό ꡬμ±ν μλ μλ€. μλ₯Ό λ€μ΄ λΈλ‘κ·Έλ₯Ό λ§λ λ€λ©΄, ν, ν¬μ€νΈ λͺ©λ‘, ν¬μ€νΈ, κΈμ°κΈ° λ±μ λ€μν νμ΄μ§λ€μ΄ μλ€. λν μ΄ νμ΄μ§λ€μ λ°λΌ μ£Όμ(URL)λ λ§λ€μ΄μ€μΌ νλ€. μ£Όμκ° μμ΄μΌ, μ μ λ€μ΄ λΆλ§ν¬λ ν μ μκ³ μλΉμ€μ ꡬκΈμ ν΅ν΄ μ μ λ μ μκΈ° λλ¬Έμ΄λ€. μ΄λ κ² μ¬λ¬ νμ΄μ§λ‘ ꡬμ±λ μΉ μ ν리μΌμ΄μ μ λ§λ€ λ νμ΄μ§λ³λ‘ μ»΄ν¬λνΈλ€μ λΆλ¦¬ν΄κ°λ©΄μ νλ‘μ νΈλ₯Ό κ΄λ¦¬νκΈ° μν΄ νμν κ²μ΄ λ°λ‘ λΌμ°ν μμ€ν (React Router)μ΄λ€.
π€ React Router μ μν
μ¬μ©μμ λΈλΌμ°μ μ£Όμμ°½μ κ²½λ‘μ λ°λΌ μλ§λ νμ΄μ§λ₯Ό 보μ¬μ€λ€. μ΄ν λ§ν¬λ₯Ό λλ¬μ λ€λ₯Έ νμ΄μ§λ‘ μ΄λνκ² λ λ μλ²μ λ€λ₯Έ νμ΄μ§μ htmlμ μλ‘ μμ²νλ κ²μ΄ μλλΌ, λΈλΌμ°μ μ History APIλ₯Ό μ¬μ©νμ¬ λΈλΌμ°μ μ μ£Όμμ°½μ κ°λ§ λ³κ²½νκ³ κΈ°μ‘΄μ νμ΄μ§μ λμ λ μΉ μ ν리μΌμ΄μ μ κ·Έλλ‘ μ μ§νλ©΄μ λΌμ°ν μ€μ μ λ°λΌ λ λ€λ₯Έ νμ΄μ§λ₯Ό 보μ¬μ£Όκ² λλ€.
React Router μ¬μ©λ²
βοΈ React Router μ€μΉ
HTML5μ History APIλ₯Ό μ¬μ©νμ¬ νμ΄μ§λ₯Ό μλ‘ λΆλ¬μ€μ§ μκ³ λ μ£Όμλ₯Ό λ³κ²½νκ³ νμ¬ μ£Όμμ κ²½λ‘μ κ΄λ ¨λ μ 보λ₯Ό 리μ‘νΈ μ»΄ν¬λνΈμμ μ¬μ©ν μ μλλ‘ ν΄ μ£Όλ μνμ μννλ€.
λΌμ°ν μ μ§νν μ»΄ν¬λνΈ μμμ
BrowserRouter
μ»΄ν¬λνΈλ₯Ό μμ±νκ³ κ°μΈμ£Όμ΄μΌ νλ€.
π History API
history μ μ κ°μ²΄λ₯Ό ν΅ν΄ λΈλΌμ°μ μΈμ νμ€ν 리μ λν μ κ·Όμ μ 곡ν©λλ€.
λΈλΌμ°μ μμ νμ΄μ§ λ‘λ©μ νλ©΄, μΈμ
νμ€ν 리λ₯Ό κ°λλ€. λΈλΌμ°μ λ μ΄ νμ€ν 리λ₯Ό stackμΌλ‘ κ΄λ¦¬νλ€. μΈμ
νμ€ν 리λ νμ΄μ§λ₯Ό μ΄λν λ λ§λ€ μμ΄λ©°, μ΄λ₯Ό ν΅ν΄ λ€λ‘κ°κΈ°
λλ μμΌλ‘ κ°κΈ°
κ°μ μ΄λμ΄ κ°λ₯νλ€.
β "μ΄λ€ νμ΄μ§λ₯Ό νμνλμ§μ λν΄μ historyλ₯Ό μλ κ²" μ΄λΌκ³ μκ°νλ©΄ λλ€.
π€ μ History APIλ₯Ό μ¬μ©νκ² λλκ°?
Reactλ SPAμ κΈ°λ°μ΄λ€. νμ΄μ§κ° λ‘λ©μ΄ λμ΄ λ³κ²½λλκ² μ²λΌ 보μ΄μ§λ§ μ»΄ν¬λνΈλ₯Ό ν΅ν΄ νλ©΄μ μ λ°μ΄νΈ(리λ λλ§)ν΄μ€λ€. κ·Έλ κΈ° λλ¬Έμ μ€μ λ‘λ νλ©΄ μ΄λμ΄ μΌμ΄λμ§ μλλ€. κ·Έλ κΈ°μ History APIλ₯Ό μ¬μ©νκ² λλ©΄ νλ©΄ μ΄λ μμ΄ URLμ μ λ°μ΄νΈ ν΄μ€ μ μλ€.
Routes & Route
Routesμ Routeλ React Router v6λΆν° λμ λ κ°λ μ΄λ€.
λͺ¨λ
Routeμ μμ κ²½λ‘
μ μ‘΄μ¬ν΄μΌ νλ©°, location λ³κ²½ μ νμμ μλ λͺ¨λ Routeλ₯Ό μ‘°νν΄ νμ¬ locationκ³Ό λ§λ Routeλ₯Ό μ°Ύμμ€λ€.
νμ¬ λΈλΌμ°μ μ location(window.location.path μ 보λ₯Ό κ°μ Έμ¨λ€)μνμ λ°λΌ λ€λ₯Έ elementλ₯Ό λ λλ§νλ€.
λΈλΌμ°μ νκ²½μ΄ μλ κ³³μμ ReactRouterκ° ν¬ν¨λ μ»΄ν¬λνΈλ₯Ό ν μ€νΈ ν λ μ¬μ©νλ€.
MemoryRouter
λ μ£Όμλ₯Ό κ°μ§κ³ μμ§ μμ, μ£Όμλ₯Ό λ°λ‘ μ‘μμ£Όμ΄μΌ νλ€.
π©π»βπ» React Router κ°λ¨ν μμ
λμ λΌμ°ν
λμ Routingμ κ²½λ‘λ₯Ό 미리 μ ν΄λμ§ μκ³ λμ μΌλ‘ μ€μ νλ λ°©μμ΄λ€.
λΌμ°νΈμ κ²½λ‘μ νΉμ κ°μ λ£μ΄ ν΄λΉ νμ΄μ§λ‘ μ΄λ ν μ μκ² νλ κ²
π€ λμ λΌμ°ν
μ΄ νμν μ΄μ λ?
React Router λ₯Ό μ¬μ©ν΄μ 미리 νλ‘μ νΈμ μ¬μ©ν κ²½λ‘λ€κ³Ό 보μ¬μ€ μ»΄ν¬λνΈλ₯Ό μ μν΄λλ€. νμ§λ§ 볡μ‘νκ³ κ·λͺ¨κ° ν° μ ν리μΌμ΄μ μμλ κ²½λ‘λ₯Ό 미리 μ€μ νλ λ°©μλ§μΌλ‘λ μ²λ¦¬νκΈ° νλ μμ μ΄ μ‘΄μ¬νλ€.
μλ₯Ό λ€μ΄ μΌνλͺ°μλ λ€μν μνμ΄ μ‘΄μ¬νκ³ , μν리μ€νΈκ° μκ³ , λν μν μμΈνμ΄μ§λ μ‘΄μ¬νλ€. κ·Έλ λ€λ©΄ μν리μ€νΈμμ μ νν μνμ μμΈ νμ΄μ§μ μ κ·Ό νκΈ° μν΄μλ μ΄λ»κ² ν΄μΌ ν κΉ?
π‘ νΉμ κ·μΉμ λ§λ€κ³ , κ·Έ κ·μΉκ³Ό λΆν©νλ URLμ΄ μμ κ²½μ°μλ§ ν΄λΉ elementλ₯Ό νλ©΄μ 보μ¬μ£Όλ λ°©μμΌλ‘ ν΄κ²°νλ€.
URL Parameter
/:κ°
ννλ‘ λμ μΈ λ°μ΄ν°λ₯Ό μ λ¬νλ€.:
κΈ°νΈ λ€μ λΆλ λ¬Έμμ΄μ΄ Path Parameter μ΄λ€.Path Parameter λ URLμ μλ κ°μ λ§μΉ 맀κ°λ³μ(Parameter)μ²λΌ μ¬μ©νλ κ²μ΄λ€.
Path parameterλ₯Ό μ΄μ©νλ©΄ μ¬μ©μκ° κ°μ νμ΄μ§λ‘ μ μνλλΌλ, ν° νμ λμΌνλ λ€λ₯Έ UIλ₯Ό 보μ¬μ£Όλλ‘ μ²λ¦¬ν μ μλ€.
βοΈ useParams
URL Paramsμ κ°μ κ°μ²΄ ννλ‘ λ°ννλ€.
key
: Route μμ μ€μ ν Path Parameterμ μ΄λ¦value
: Routeμμ μ€μ ν Path Parameterμ μ€μ λ‘ μ λ¬λ κ°
/post/:idλ‘ pathλ₯Ό μ€μ νμ λ, μ μ κ° /post/1λ‘ μ μν κ²½μ° useParamsκ° λ°ννλ κ°μ²΄μ keyλ idμ΄κ³ , valueλ 1μ΄λ€.
QueryString
URLμ 쿼리 μ€νΈλ§μ ν¬ν¨μμΌμ£Όλ©΄ λλ€. νΉλ³ν μ€μ μ ν νμλ μλ€.
Link μ»΄ν¬λνΈ μμ :
<Link to="/list?sort=popular" />
navigate ν¨μ μμ :
navigate("/list?sort=popular")
βοΈ useSearchParams
QueryString (μ : ?sort=popular&sort=latest) μμ μνλ κ°λ§ κΊΌλ΄μ¬ μ μλλ‘ λμμ£Όλ Hook
searchParams.get(key) : 쿼리 μ€νΈλ§μμ νΉμ keyμ value κ° λ°ν (νλλ§)
searchParams.getAll(key) : 쿼리 μ€νΈλ§μμ νΉμ keyμ λͺ¨λ value κ°μ λ°°μ΄λ‘ λ°ν
searchParams.toString() : κ°μ²΄ ννμ 쿼리 μ€νΈλ§μ λ¬Έμμ΄ ννλ‘ λ°ν
π μ°Έκ³
Last updated