Я создаю небольшую панель инструментов для компании. У меня есть маршрутизатор во всем приложении, и в пути /
я показываю 5 <Link />
для перемещения по разным страницам внутри одной панели. Чего я хотел добиться, так это того, что мне нужно скрыть эти теги <Link />
при входе в другой раздел приложения. Я делаю это, меняя состояния, и все работает нормально.
Но настоящая проблема возникает, когда я нажимаю кнопку «Назад», потому что состояние не меняется. Например, когда я нажимаю Пациенты, состояние visibleMenu
меняется на false, чтобы скрыть меню. Когда я нажимаю на панель инструментов, состояние visibleMenu
снова меняется на true. Когда я нажимаю кнопку «Назад», состояние visibleMenu
остается таким же, как и до нажатия кнопки «Назад».
Есть ли способ обработать нажатие кнопки «Назад» с помощью react-router-dom
, поэтому, когда пользователь нажимает ответ, я могу проверить изменение URL-адреса и соответственно установить состояние visibleMenu
?
Редактировать
Я добавляю код, чтобы вы могли его увидеть.
Компонент меню таков:
<div className={this.props.className}>
<div>
<ul className={'dashboardLinks ' + (this.state.visibleMenu ? 'show' : 'hide')}>
<li>
<Link to="/patients" className="br10 sh1 anim-1" onClick={this.hideMenu}>
<span className="fa fa-users"></span>
Patients
</Link>
</li>
<li>
<Link to="/filter" className="br10 sh1 anim-1" onClick={this.hideMenu}>
<span className="fa fa-filter"></span>
Filter Data
</Link>
</li>
<li>
<Link to="/search" className="br10 sh1 anim-1" onClick={this.hideMenu}>
<span className="fa fa-search"></span>
Quick Search
</Link>
</li>
<li>
<Link to="/account" className="br10 sh1 anim-1" onClick={this.hideMenu}>
<span className="fa fa-user"></span>
My Account
</Link>
</li>
<li>
<a href="#logout" className="br10 sh1 anim-1" onClick={this.props.logout}>
<span className="fa fa-sign-out"></span>
Logout
</a>
</li>
</ul>
<Route path="/patients" component={Patients}></Route>
<Route path="/patients/:id" component={PatientInfo}></Route>
<Route path="/filter" component={Filter}></Route>
<Route path="/search" component={Search}></Route>
<Route path="/account" component={Account}></Route>
</div>
</div>
Там вы можете увидеть, как я показываю и скрываю меню в зависимости от состояния. В этом состоянии мне нужно проверить, перезагружает ли пользователь страницу, чтобы установить ее в соответствии с URL-адресом, если это только «/», то показать меню, иначе не показывать его.
Я делаю так:
componentWillMount() {
var url = window.location.pathname;
if(url === '/') {
this.setState({
visibleMenu: true
});
} else {
this.setState({
visibleMenu: false
});
}
}
Но если пользователь нажимает кнопку «Назад», состояние не обновляется, поэтому меню не отображается.