react-router-dom switch & match
Renders the first child <Route>
or <Redirect>
that matches the location.
If the URL is /about
, then <About>
, <User>
, and <NoMatch>
will all render because they all match the path. This is by design, allowing us to compose <Route>
s into our apps in many ways, like sidebars and breadcrumbs, bootstrap tabs, etc.
import { Route } from "react-router"; let routes = ( <div> <Route path="/about"> <About /> </Route> <Route path="/:user"> <User /> </Route> <Route> <NoMatch /> </Route> </div> );
Occasionally, however, we want to pick only one <Route>
to render. If we’re at /about
we don’t want to also match /:user
(or show our “404” page). Here’s how to do it with Switch
:
import { Route, Switch } from "react-router"; let routes = ( <Switch> <Route exact path="/"> <Home /> </Route> <Route path="/about"> <About /> </Route> <Route path="/:user"> <User /> </Route> <Route> <NoMatch /> </Route> </Switch> );
Now, if we’re at /about
, <Switch>
will start looking for a matching <Route>
. <Route path="/about"/>
will match and <Switch>
will stop looking for matches and render <About>
. Similarly, if we’re at /michael
then <User>
will render.
We can manually set the variable parameters like this:
<Route path="/scan/detail/:trx/:tokenAddress" component={ScanDetail} />
And then we can get this parameter in the subcomponent:
let { tokenAddress } = this.props.match.params;
A match
object contains information about how a <Route path>
matched the URL. match
objects contain the following properties:
params
- (object) Key/value pairs parsed from the URL corresponding to the dynamic segments of the pathisExact
- (boolean)true
if the entire URL was matched (no trailing characters)path
- (string) The path pattern used to match. Useful for building nested<Route>
surl
- (string) The matched portion of the URL. Useful for building nested<Link>
s
You’ll have access to match
objects in various places:
- Route component as
this.props.match
- Route render as
({ match }) => ()
- Route children as
({ match }) => ()
- withRouter as
this.props.match
- matchPath as the return value
- useRouteMatch as the return value
If a Route does not have a path
, and therefore always matches, you’ll get the closest parent match. Same goes for withRouter
.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2017-08-24 postman测试express restful接口
2016-08-24 PHP学习(7)——面向对象(上)