- 配置嵌套路由结构(以React Router为例):
- 首先确保安装了
react - router - dom
。
- 在父组件中配置路由如下:
import React from'react';
import { BrowserRouter as Router, Routes, Route } from'react - router - dom';
const ParentComponent = () => {
return (
<Router>
<Routes>
<Route path="/products" element={<ParentContent />}>
<Route path=":productId" element={<ProductDetail />} />
</Route>
</Routes>
</Router>
);
};
const ParentContent = () => {
return (
<div>
<h1>Products Page</h1>
</div>
);
};
const ProductDetail = () => {
return (
<div>
<h1>Product Detail Page</h1>
</div>
);
};
export default ParentComponent;
- 在子组件中获取
:productId
参数:
- 使用
react - router - dom
中的useParams
钩子。
- 子组件修改如下:
import React from'react';
import { useParams } from'react - router - dom';
const ProductDetail = () => {
const { productId } = useParams();
return (
<div>
<h1>Product Detail Page for productId: {productId}</h1>
</div>
);
};
export default ProductDetail;
- 在父组件与子组件间传递其他数据:
- 通过props传递:
- 在父组件路由配置中,将数据作为props传递给子组件。
import React from'react';
import { BrowserRouter as Router, Routes, Route } from'react - router - dom';
const ParentComponent = () => {
const sharedData = "Some data to pass";
return (
<Router>
<Routes>
<Route path="/products" element={<ParentContent />}>
<Route path=":productId" element={<ProductDetail data={sharedData} />} />
</Route>
</Routes>
</Router>
);
};
const ParentContent = () => {
return (
<div>
<h1>Products Page</h1>
</div>
);
};
const ProductDetail = ({ data }) => {
const { productId } = useParams();
return (
<div>
<h1>Product Detail Page for productId: {productId}</h1>
<p>{data}</p>
</div>
);
};
export default ParentComponent;
import React from'react';
const MyContext = React.createContext();
export default MyContext;
- 在父组件中提供上下文数据。
import React from'react';
import { BrowserRouter as Router, Routes, Route } from'react - router - dom';
import MyContext from './MyContext';
const ParentComponent = () => {
const sharedData = "Some data to pass";
return (
<Router>
<MyContext.Provider value={sharedData}>
<Routes>
<Route path="/products" element={<ParentContent />}>
<Route path=":productId" element={<ProductDetail />} />
</Route>
</Routes>
</MyContext.Provider>
</Router>
);
};
const ParentContent = () => {
return (
<div>
<h1>Products Page</h1>
</div>
);
};
const ProductDetail = () => {
const data = React.useContext(MyContext);
const { productId } = useParams();
return (
<div>
<h1>Product Detail Page for productId: {productId}</h1>
<p>{data}</p>
</div>
);
};
export default ParentComponent;