useParams 완벽 정리useParams는 React Router에서 제공하는 훅으로,
URL의 path 뒤에 입력되는 /:param 형태의 값(동적 파라미터) 을 가져오는 데 사용합니다.
예를 들어:
/users/123
이 URL에서 123을 가져오려면 아래처럼 설정합니다.
<Route path="/users/:userId" element={<UserDetail />} />
그리고 컴포넌트에서:
import { useParams } from "react-router-dom";
export default function UserDetail() {
const { userId } = useParams();
console.log(userId); // "123"
return <div>User ID: {userId}</div>;
}
✅ useParams는 URL의 path 뒤에 오는 값 중 :이름으로 설정한 값만 가져옵니다.
❌ 쿼리스트링(?key=value)이나 해시(#section) 값은 가져오지 못합니다.
쿼리스트링은 useSearchParams로 가져옵니다.
<Route path="/posts/:postId" element={<PostDetail />} />
:postId ➔ 동적 파라미터로 선언import { useParams } from "react-router-dom";
export default function PostDetail() {
const { postId } = useParams();
console.log(postId); // URL에 입력된 값 출력
return <div>Post ID: {postId}</div>;
}
게시글 상세 데이터를 가져오는 예시:
import { useParams } from "react-router-dom";
import { useEffect, useState } from "react";
import axios from "axios";
export default function PostDetail() {
const { postId } = useParams();
const [post, setPost] = useState(null);
useEffect(() => {
const fetchPost = async () => {
const res = await axios.get(`/api/posts/${postId}`);
setPost(res.data);
};
fetchPost();
}, [postId]);
if (!post) return <div>Loading...</div>;
return <div>{post.title}</div>;
}
✅ useParams()로 가져온 postId를 API 요청 URL에 넣어 데이터를 가져와 화면에 표시합니다.
✅ useParams는 해당 컴포넌트가 Route로 렌더링될 때만 작동합니다.
✅ 반환되는 값은 문자열(string) 입니다. 필요시 parseInt() 등을 사용해 숫자로 변환해 사용하세요.
✅ URL의 path param 이름(:param)과 변수 이름이 정확히 일치해야 합니다.
useParams는 React Router에서/:param으로 선언한 URL의 path 파라미터 값을 가져오기 위한 훅으로, 동적 상세 페이지, 수정 페이지 등의 데이터를 가져오는 실무에서 매우 자주 사용합니다.
const params = useParams();
//console.log(params);
return <h1>Coin : {params}</h1>
>>
const {coinId} = useParams();
return <h1>Coin : {coinId}</h1>;
