#reactjs #react-router
#reactjs #реагирующий маршрутизатор
Вопрос:
Я отображаю некоторые <NavLink />
из них, как показано ниже
<div class="container">
<NavLink to="/" exact></NavLink>
<NavLink to="/profile"></NavLink>
<NavLink to="/message"></NavLink>
</div>
здорово, что react-router добавит active
класс, которому в данный момент соответствует.
но как мне узнать, какой из них активен в данный момент?
потому что у меня есть несколько других стилей для настройки на основе этого, например, когда '/'
я хочу указать .container
отступ 100 пикселей влево, а когда в ‘/ profile’, я хочу указать .container
отступ 200 пикселей влево.
Ответ №1:
Вы можете использовать withRouter для получения пути к текущей странице, используя pathname, который вы можете подать, который является вашей текущей страницей.
import React from "react";
import { withRouter } from "react-router";
class Location extends React.Component {
render() {
const { match, location, history } = this.props;
return <div>You are now at {location.pathname}</div>;
}
}
const WithRouter = withRouter(ShowTheLocation);
Ответ №2:
Вы можете добавить к каждому из них другое activeClassName.
(См https://reacttraining.com/react-router/web/api/NavLink )
Например
<div class="container">
<NavLink to="/" exact></NavLink>
<NavLink to="/profile" activeClassName="matched-profile"></NavLink>
<NavLink to="/message"></NavLink>
</div>
Затем оформите контейнер следующим образом .container:has(.matched-profile)