useParams ๋ฐฉ์import { useParams } from "react-router-dom";
function MovieDetail() {
// URL์ ์ ์๋ :movieId ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฐ๋ก ๊บผ๋
const { movieId } = useParams<{ movieId: string }>();
// movieId๋ฅผ ์ด์ฉํด API ํธ์ถ, ํ๋ฉด ๋ ๋๋ง ๋ฑ ์ฒ๋ฆฌ
return <div>Movie ID: {movieId}</div>;
}
์ฅ์
๋จ์
path ์ ๋ณด)๊น์ง๋ ์ ์ ์์ต๋๋ค.useMatch / useRouteMatch ๋ฐฉ์react-router-dom@6๋ถํฐ๋ useMatch(pattern)์, v5์์๋ useRouteMatch() ํ
์ ์ฌ์ฉํฉ๋๋ค.
import { useMatch } from "react-router-dom";
function MovieDetail() {
// "/movies/:movieId" ํจํด์ ๋งค์นญ๋ ์ ๋ณด๋ฅผ ๊ฐ์ฒด๋ก ๋ฐ์
const match = useMatch("/movies/:movieId");
// match.params.movieId ๋ก ๊บผ๋ผ ์ ์์
const movieId = match?.params.movieId;
return <div>Movie ID: {movieId}</div>;
}
ํจํด ๋งค์นญ ์ ๋ณด
match ๊ฐ์ฒด์๋
params: ํ๋ผ๋ฏธํฐ ๊ฐ,pathname: ๋งค์นญ๋ URL,pattern: ๋งค์นญ์ ์ฌ์ฉ๋ ํจํด ์ ๋ณด(path, caseSensitive, end ๋ฑ)์ฆ, โ์ด๋ค URL ํจํด์ ๋งค์นญ๋๋์งโ๊น์ง ์ ์ ์์ต๋๋ค.
์กฐ๊ฑด๋ถ ๋ ๋๋ง
if (!match) {
// URL์ด /movies/:movieId ํจํด์ด ์๋ ๋
return <NotFound />;
}
์ด๋ฐ ์์ผ๋ก โํจํด์ ๋งค์นญ๋์ง ์์์ผ๋ฉด ๋ค๋ฅธ UI๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐโ๋ ์ฝ์ต๋๋ค.
์ค์ฒฉ ๋ผ์ฐํ ๋์
useMatch๋ฅผ ์จ์| ์ํฉ | ์ถ์ฒ ๋ฐฉ์ | ์ด์ |
|---|---|---|
| ๋จ์ํ ํ๋ผ๋ฏธํฐ ๊ฐ๋ง ํ์ํ ๋ | useParams | ์ฝ๋๊ฐ ๋ ๊ฐ๊ฒฐํ๊ณ ๊ฐ๋ ์ฑ์ด ์ข์ต๋๋ค. |
| โ์ง๊ธ ์ด URL์ด ํน์ ํจํด์ ๋ง๋์งโ๋ ํจ๊ป ํ์ธํด์ผ ํ ๋ | useMatch | ๋งค์นญ๋ ํจํด ์ ๋ณด(match.pattern)์ params๋ฅผ ๋ ๋ค ์ป์ ์ ์์ต๋๋ค. |
| ์ค์ฒฉ๋ ๋ค์คํฐ๋ ๋ผ์ฐํ ๊ตฌ์กฐ์์ ๋ถ๋ชจยท์์ ๊ฒฝ๋ก๋ฅผ ๋ถ๊ธฐํ ๋ | useMatch | ๋ ๋ฒจ๋ณ๋ก match ๊ฐ์ฒด๋ฅผ ๋ฐ์์, โ๋ถ๋ชจ ๊ฒฝ๋กโ์ โ์์ ๊ฒฝ๋กโ๋ฅผ ๊ฐ๊ฐ ์ฒดํฌํ๊ธฐ ํธ๋ฆฌํฉ๋๋ค. |
// App.tsx
<Routes>
<Route path="/" element={<Home />} />
<Route path="/movies/:movieId" element={<MovieDetail />} />
</Routes>
// MovieDetail.tsx
import { useParams, useMatch } from "react-router-dom";
function MovieDetail() {
// 1) ํ๋ผ๋ฏธํฐ๋ง ๊บผ๋ผ ๋
const { movieId } = useParams<{ movieId: string }>();
// 2) ํจํด ๋งค์นญ ์ ๋ณด๋ ํ์ํ ๋
const match = useMatch("/movies/:movieId");
console.log("Matched pattern:", match?.pattern);
console.log("Movie ID:", movieId);
return <div>Now showing details for movie #{movieId}</div>;
}
useParams๋ก๋ ๊ฐ๋ง,useMatch๋ก๋ ๊ฐ + ๋งค์นญ๋ ํจํด ์ ๋ณด๊น์ง ๊ฐ์ ธ์ค๋ ์ฐจ์ด๋ผ๊ณ ์ดํดํ์๋ฉด ๋ฉ๋๋ค.