reactjs - 无法使用 React Router 渲染子组件(嵌套路由)
问题描述
我正在尝试使用嵌套路由来呈现不同的组件。当我单击我的链接时,URL 会更新,但组件没有呈现。在此之前,我使用的是导入的组件,但由于它不起作用,我将它剥离到这段代码中,它仍然只是显示一个空白组件并且没有错误。
import React from 'react';
import { Route, Switch, Link, useRouteMatch } from 'react-router-dom';
function InfluencerComponent() {
let { path, url } = useRouteMatch();
const navLinks = (
<div>
<Link to={`${url}/select-trade`}>Select trade</Link>
<Link to={`${url}/add-skills`} className="ml-2">
Add skills
</Link>
</div>
);
return (
<div className="row mt-3">
<Switch>
<Route exact path={path}>
{navLinks}
</Route>
<Route path={`${path}/select-trade`}>
{navLinks}
<Test />
</Route>
<Route path={`${path}/add-skills`}>
{navLinks}
<TestTwo />
</Route>
</Switch>
</div>
);
}
function Test() {
return 'Test Component';
}
function TestTwo() {
return 'Another Test Component';
}
export default InfluencerComponent;
解决方案
组件未呈现,因为您应该使用component
prop 而不是children
.
示例:
return (
<div className="row mt-3">
<Switch>
// ...
<Route path={`${path}/add-skills`} component={<>{navLinks}<TestTwo /></>} />
</Switch>
</div>
);
<Route />
有关道具的更多信息:
https://reacttraining.com/react-router/web/api/Route/component
推荐阅读
- swift - UICollectionViewLayout 不适用于 Swift 5 和 Xcode 11 中的 UIImage
- scala - 如何从 MapType Scala Spark Column 中提取数据作为 Scala Map?
- python - 元素点击拦截硒
- ibm-data-replication - 如何在 IIDR CDC 中查看有问题的记录
- api - 使用 web 服务或 API 公开 cobolfiles db
- android - 如何获得正确的地理围栏过渡信息?
- c# - 返回接口的通用方法
- c# - 如何从 PowerShell CmdLet 中获取登录用户名
- android - 当键盘显示时,带有 EditText 的 Android ListView 失去焦点。键盘随机出现
- mysql - 如何从 excel 中获取数据并将 excel 值作为参数传递给 pentaho etl 作业的 SQL 查询