- 通过URL参数传递:
- 原理:在URL中嵌入参数,路由组件可以从URL中解析这些参数。
- 示例:
import { BrowserRouter as Router, Routes, Route } from'react-router-dom';
import DetailPage from './DetailPage';
function App() {
return (
<Router>
<Routes>
<Route path="/product/:productId" element={<DetailPage />} />
</Routes>
</Router>
);
}
export default App;
- 在DetailPage组件中获取参数:
import { useParams } from'react-router-dom';
function DetailPage() {
const { productId } = useParams();
return (
<div>
<p>产品ID: {productId}</p>
</div>
);
}
export default DetailPage;
- 通过state传递:
- 原理:在导航时,可以将参数作为
state
对象的一部分传递,目标组件可以从history.location.state
中获取这些参数。
- 示例:
import { Link } from'react-router-dom';
function ProductList() {
const product = { id: 1, name: '示例产品' };
return (
<div>
<Link to={{
pathname: '/product-detail',
state: { product }
}}>查看产品详情</Link>
</div>
);
}
export default ProductList;
- 在目标组件获取参数:
import { useLocation } from'react-router-dom';
function ProductDetail() {
const location = useLocation();
const { product } = location.state || {};
return (
<div>
{product && <p>产品名称: {product.name}</p>}
</div>
);
}
export default ProductDetail;