//Router.js
<Route path="/ProductList" element={<ProductList />} />
<Route path="/ProductDetail/:id" element={<ProductDetail />} />
react-router-dom에서 동적 라우팅을 구현하는 방법은 Route 구성 요소의 경로 소품에 있습니다.
: 팻말을 쓰는 것입니다.
경로/:문자열 양식에 경로를 설정하면 URL에서 경로/ 뒤에 오는 문자가 경로에 연결됩니다.
경로 매개변수 개념
경로/:문자열 여기서 문자열은 경로 매개변수에 해당합니다.
경로 매개변수를 활용하면 동적 라우팅을 구현하면서 다양한 UI를 표시할 수 있습니다.
useParams 후크 개념
useParams 후크는 react-router-dom에 내장된 후크입니다.
이를 통해 경로 매개변수의 값을 쉽게 얻을 수 있으며 상태와 마찬가지로 경로 매개변수의 값이 변경될 때 컴포넌트를 다시 렌더링하는 기능을 제공합니다.
useParams 후크를 호출하면 객체 형식으로 경로 매개변수 값이 반환됩니다.
이때 객체 속성의 키는 라우트에 설정된 경로 매개변수의 이름이고, 값은 실제로 경로 매개변수에 전달되는 값이다.
예 useParams
// list
<div key={productId} className="goodListItem">
<div className="images">
<img
className="rendingImage"
src={productImage(0)}
alt="rendingImage"
onClick={() => {
navigate(`/productDetail/${productId}`);
}}
/>
//detail
import {useParams} from 'react-router-dom';
const params = useParams();
const goodsId = params.id;
const (productPrice, setProductPrice) = useState({});
useEffect(() => {
fetch(`http://ip주소:3000/products/${goodsId}`, {
method: 'GET',
headers: {
'Content-Type': 'application/json;charset=utf-8'
},
})
.then(res => res.json())
.then(result => setProductPrice(result));
}, (goodsId)); // goodsId가 바뀔때마다 재렌더링시킵니다.