// 동적 Route
- path가 고정되어 있지 않고 동적인 경우 :을 사용한다.
{ path: '/url/:식별자', element: jsx코드 },
- 해당 컴포넌트에서는 useParams를 사용하여 url에 입력된 param을 받아올 수 있다.
const params = useParams();
- param은 객체 형태로, path에서 :뒤에 적은 식별자명으로 해당 값을 받을 수 있다.
<p>{params.식별자}</p>
import { createBrowserRouter, RouterProvider } from 'react-router-dom';
import HomePage from './pages/Home';
import ProductsPage from './pages/Products';
import RootLayout from './pages/Root';
import ErrorPage from './pages/Error';
import ProductDetailPage from './pages/ProductDetail';
const router = createBrowserRouter([
{
path: '/',
element: <RootLayout />,
errorElement: <ErrorPage />,
children: [
{ path: '/', element: <HomePage /> },
{ path: '/products', element: <ProductsPage /> },
{ path: '/products/:productId', element: <ProductDetailPage /> },
],
},
]);
function App() {
return <RouterProvider router={router} />;
}
export default App;
import React from 'react';
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((product) => (
<li key={product.id}>
<Link to={`/products/${product.id}`}>{product.title}</Link>
</li>
))}
</ul>
</>
);
}
export default ProductsPage;
import React from 'react';
import { Link, useParams } from 'react-router-dom';
function ProductDetailPage() {
const params = useParams();
return (
<>
<h1>Product Details!</h1>
<p>{params.productId}</p>
<p>
<Link to="..">Back</Link>
</p>
</>
);
}
export default ProductDetailPage;
'클라이언트 > React' 카테고리의 다른 글
[리액트(React)] Router - action (0) | 2024.02.20 |
---|---|
[리액트(React)] Router - loader (0) | 2024.02.19 |
[리액트(React)] 라우터(Router) (0) | 2024.02.17 |
[리액트(React)] Redux Toolkit (0) | 2024.02.16 |
[리액트(React)] Redux with Class-based Component (0) | 2024.02.15 |