我最近开始学习 react 和 react-router-dom。我的任务是动态路由页面并根据动态路由查看数据。
所以当我路由到这个 url http://localhost:3000/category 它应该显示所有类别,当我单击每个类别时,它应该只呈现带有数据的子组件。目前它正在使用父组件进行渲染。
示例: 如果我路由到这个 url http://localhost:3000/category/nike 它应该只呈现带有 nike 描述的产品组件。 下面是我的代码。请帮助我提出您的建议。
App.js
import { Link, Route, Switch } from "react-router-dom";
import './App.css';
import Home from './Home';
import Category from './Category';
function App() {
return (
<div className="App">
<nav className="navbar navbar-light">
<ul className="nav navbar-nav">
<li>
<Link exact to="/">Home</Link>
</li>
<li>
<Link to="/category">Category</Link>
</li>
</ul>
</nav>
<Switch>
<Route exact path="/"><Home /></Route>
<Route path="/category"><Category /></Route>
</Switch>
</div>
);
}
export default App;
类别.js
import React from 'react'
import { Link, Route, useParams, useRouteMatch } from "react-router-dom";
import Product from './Product';
export default function Category() {
const { url, path } = useRouteMatch();
const productData = [
{
id: 1,
name: "nike",
description:
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin molestie.",
status: "Available",
},
{
id: 2,
name: "slippers",
description:
"Mauris finibus, massa eu tempor volutpat, magna dolor euismod dolor.",
status: "Out of Stock",
},
{
id: 3,
name: "Adidas",
description:
"Maecenas condimentum porttitor auctor. Maecenas viverra fringilla felis, eu pretium.",
status: "Available",
},
{
id: 4,
name: "puma",
description:
"Ut hendrerit venenatis lacus, vel lacinia ipsum fermentum vel. Cras.",
status: "Out of Stock",
},
];
return (
<div>
<ul>
{productData.map((product) => {
return (
<li>
<Link to={`${url}/${product.name}`}>{product.name}</Link>
</li>
);
})}
</ul>
<Route path={`${path}/:name`}>
<Product />
</Route>
</div>
)
}
Product.js
import React from 'react'
import { useParams } from 'react-router-dom';
export default function Product() {
const {name} = useParams();
return (
<div>
{name}
</div>
);
}