reactjs - React router 嵌套路由和数据展示
问题描述
我最近开始学习 react 和 react-router-dom。我的任务是动态路由页面并根据动态路由查看数据。
所以当我路由到这个 url http://localhost:3000/category 时,它应该显示所有类别,当我单击每个类别时,它应该只呈现带有数据的子组件。目前它正在与父组件一起渲染。
示例:如果我路由到这个 url http://localhost:3000/category/nike 它应该只呈现带有 nike 描述的 Product 组件。下面是我的代码。请帮我提出你的建议。
应用程序.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>
)
}
产品.js
import React from 'react'
import { useParams } from 'react-router-dom';
export default function Product() {
const {name} = useParams();
return (
<div>
{name}
</div>
);
}
解决方案
推荐阅读
- python - 为什么不显示python回溯消息?
- laravel-6 - 无法解析 [Illuminate\Mail\TransportManager] 的 NULL 驱动程序。在 laravel 6 驱动程序 smto gmail
- python - 调用方法时如何获取二进制的路径
- azure-data-factory - 如何通过调用 databricks rest api 从数据块 Web 活动创建/启动集群
- reactjs - 除非我重建 App Next JS,否则图像不会加载
- reactjs - 如何将文件夹的任何子路径重写为 .htaccess 中的特定 index.html 文件
- amazon-web-services - 如何使用 AWS CLI 列出用户及其权限?
- python - 为什么在放置models.CASCATE时会出现此错误?
- ruby-on-rails - Ruby on Rails:rosource RESOURCE_NAME dosent 生成索引路由/操作
- python - 正则表达式匹配字符序列和仅一种类型的符号