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>sYou’ll have access to match objects in various places:
this.props.match({ match }) => ()({ match }) => ()this.props.matchIf a Route does not have a path, and therefore always matches, you’ll get the closest parent match. Same goes for withRouter.
react-router-dom switch & match
原文:https://www.cnblogs.com/xulei1992/p/15179717.html