Как изменить состояние компонента, когда пользователь нажимает кнопку «Назад» на react-router-dom?

Я создаю небольшую панель инструментов для компании. У меня есть маршрутизатор во всем приложении, и в пути / я показываю 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
        });
    }
}

Но если пользователь нажимает кнопку «Назад», состояние не обновляется, поэтому меню не отображается.


person Pablo Zehle    schedule 08.08.2017    source источник
comment
не могли бы вы вставить свои коды куда-нибудь, чтобы я помог отладить?   -  person Bowen Li    schedule 08.08.2017
comment
Покажите нам свой компонент меню и то, как вы используете его в других компонентах, например. Компонент пациентов.   -  person abdul    schedule 08.08.2017
comment
Спасибо, ребята, я отредактировал свой вопрос, чтобы вы могли увидеть код. Пожалуйста, дайте мне знать, если вам нужно что-нибудь еще.   -  person Pablo Zehle    schedule 08.08.2017


Ответы (1)


Поскольку я не получил никаких ответов, я просто реструктурировал свое веб-приложение, чтобы объявить Routes для любого варианта.

person Pablo Zehle    schedule 14.08.2017