вам нужно установить react-router-dom
пакет. Тогда вы можете управлять вещами, как показано ниже.
Если вы хотите получить доступ к реквизитам маршрута. вам нужно обернуть его в withRouter
. Благодаря этому ваш компонент может получить доступ к реквизитам маршрутов
import React from "react";
import { withRouter } from "react-router";
class ShowTheLocation extends React.Component {
render() {
const { match, location, history } = this.props;
return <div>You are now at {location.pathname}</div>;
}
}
// Create a new component that is "connected" (to borrow redux
// terminology) to the router.
export const Content = withRouter(ShowTheLocation);
Но я считаю, что в идеале вы хотите достичь чего-то подобного приведенному ниже. Вы можете иметь оператор switch и отображать компоненты внутри него. Итак, ниже у вас есть приложение. js с заявлением Switch
. Я также импортировал компонент Footer
с собственным оператором switch.
import React from "react";
import { BrowserRouter, Switch, Route, Link } from "react-router-dom";
import { Content } from "./Content";
import { Footer } from "./Footer";
export class App extends React.Component {
render() {
return (
<BrowserRouter>
<div>
<ul>
<li>
<Link to="/">Home</Link>
</li>
<li>
<Link to="/about">About</Link>
</li>
<li>
<Link to="/topics">Topics</Link>
</li>
</ul>
<Switch>
<Route path="/about">
<div> About </div>
</Route>
<Route path="/topics">
<div> Topic </div>
</Route>
<Route path="/">
<div> Home </div>
</Route>
</Switch>
</div>
<Content />
<Footer />
</BrowserRouter>
);
}
}
Вы можете иметь несколько операторов switch в одноуровневых элементах
import React from "react";
import { Switch, Route } from "react-router-dom";
export class Footer extends React.Component {
render() {
return (
<Switch>
<Route path="/about">
<div> About Footer </div>
</Route>
<Route path="/topics">
<div> Topic Tooter </div>
</Route>
<Route path="/">
<div> Home Footer</div>
</Route>
</Switch>
);
}
}
Вот рабочий пример