Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- git
- github
- react
- webpack
- node
- max-width
- react-router-dom
- 그럼에도 불구하고
- 프론트엔드
- CSS
- 코딩테스트
- media query
- TypeScript
- 자바
- JavaScript
- coding
- Servlet
- JS
- 코드업
- java
- 변수
- 자바문제풀이
- node.js
- 반응형 페이지
- HTML
- redux
- frontend
- cleancode
- 그럼에도불구하고
- @media
Archives
- Today
- Total
그럼에도 불구하고
[Router] useParams 사용하기 본문
오늘은 useParams 사용하는 법에 대해 알아보겠습니다.
[ useParams란? ]
useParams이란 react-router-dom에서 제공하는 Hooks 중 하나로 Parameter(파라미터) 값을 URL을 통해서 넘겨받은 페이지에서 사용할 수 있도록 해주는 것을 말합니다.
예를 들어, 특정 제품 리스트에서 제품을 클릭 시 제품의 세부 정보를 나타내는 페이지로 이동하고 싶다면 제품의 id 값을 URL로 넘겨 세부 페이지에서 id 값에 해당하는 제품만 보여줄 수 있습니다.
리액트에서 라우터 사용 시 파라미터 정보를 가져와 활용하고 싶다면 useParams를 사용하면 됩니다.
createBrowserRouter를 통해 다음과 같이 코드를 작성한다고 가정했을 때, ProductDetailPage로 이동하기 위해서는 해당 경로가 products/:productId와 같은 경로로 이동해야 합니다.
여기서 : (콜론)을 통해 뒤에 오는 페이지를 동적으로 구현할 수 있습니다.
const router = createBrowserRouter([
{
path: "/",
element: <RootLayout />,
errorElement: <ErrorPage />,
children: [
{ index: true, element: <HomePage /> },
{ path: "products", element: <ProductsPage /> },
{ path: "products/:productId", element: <ProductDetailPage /> },
// product/: <- 콜론을 통해 뒤에 오는 페이지를 동적으로 구현함
],
},
]);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | import { Link } from "react-router-dom"; const PRODUCTS = [ {id: 'p1', title: 'Product 1'}, {id: 'p2', title: 'Product 2'}, {id: 'p3', title: 'Product 3'}, ]; function ProductsPage() { return ( <> <h1>The Products Page</h1> <ul> {PRODUCTS.map( prod => ( <li key={prod.id}><Link to={`/products/${prod.id}`}>{prod.title}</Link></li> ))} </ul> </> ); } export default ProductsPage; | cs |
Products라는 페이지에서 제품에 대한 기본 정보가 나열되어 있고 해당 정보를 클릭 시 제품에 대한 상세 페이지를 나타내게 할 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import { useParams } from "react-router-dom"; function ProductDetailPage() { const params = useParams(); // useParams() : 라우트 정의에서 프로퍼티로 정의한 모든 역동적 경로 세그먼트가 담긴 간단한 JavaScript 객체이다. return ( <> <h1>Product Details</h1> <p>{params.productId}</p> </> ); } export default ProductDetailPage | cs |
ProductDetailPage에서는 useParams을 통해 URL로 받은 id를 출력합니다.
Product1, Product2, Product3 중 하나를 클릭
해당 URL로 이동
useParams을 통해 p1 출력
'React > Router' 카테고리의 다른 글
[Router] action과 Form, useActionData 그리고 redirect (0) | 2023.06.12 |
---|---|
[Router] loader의 error 처리 with useRouterError & json (0) | 2023.06.10 |
[Router] loader와 useLoaderData (0) | 2023.06.10 |
[Router] Link와 Outlet (0) | 2023.06.09 |
[Router] RouterProvider와 CreateBrowserRouter (0) | 2023.06.09 |
Comments