reactjs - 反应路由器两个 URL 参数及更多
问题描述
我正在使用 react-router-dom ,目前它是这样的:
<Switch>
<Route path={"/layouts/:layoutID"} component={Layouts} />
<Route
path={"/dashboard/:dashboardID"}
component={Dashboards}
/>
</Switch>
当用户导航到此组件内的“/dashboard/:dashboardID”时,他可以选择一个子页面 onClick,我希望 URL 结构将是“/dashboard/:dashboardID/:pageID”,pageID 将导航到“PageIdComponent”组件将获得“匹配”道具并显示 pageID
请参阅显示必要结构的附件。
解决方案
如果 Dashboard 组件中有子路由,则可以使用该match.path
值来构建子路由:
<Route path={`${props.match.path}/:dashboardId`}>} component={SubDashboard} />
为了使路径与父路径匹配,然后在其上添加一个新变量。
然后,您可以使用 导航到它match.url
以创建指向当前 URL 的链接并将 subPage 添加到其中:
<Link to={`${props.match.url}/pageFour`}>Page four</Link>
withRouter
React Router 提供了通过HOC 或各种hooks将相关的 props 获取到您想要的任何组件的方法,而不是 prop 钻探。这些钩子是在 5.1 版中引入的
要通过钩子获得比赛,您可以使用const match = useRouteMatch()
通过 HOC 获取相关的 props:
const Example = useRouteMatch(function Example({ match, location, history }) {
return <div>{match.url}</div>;
});
对于反应路由器 v6(即将推出):
https://reacttraining.com/blog/react-router-v6-pre/#nested-routes-and-layouts
推荐阅读
- c# - iTunes COM PlayerPositionMS 值更新间隔
- java - 在 Java 中增加 ArrayList 中的 ArrayList 的大小
- python - uwsgi -- 请求的不可用修饰符:80 --
- c++ - 具有类型别名的替代类实现
- python - 关于 numpy.random.RandomState 的使用
- mysql - group by 无法保留重复项
- c# - 制作一个检查用户输入是否等于随机数的方法
- php - 如何在 .htaccess 中使用正确的重定向在 PHP 中创建干净的 URL?
- android - 如何在 Google Play 游戏服务中为多人游戏传递额外参数?
- java - Java编译错误“未找到变量”持续存在