Задать вопрос

Как при смене адреса закрыть меню?

При смене страницы хочу закрыть меню.

componentDidUpdate(prevProps, prevState, snapshot) {
        if (this.state.menuMobile) {
            if (this.props.location.pathname !== this.props.history.location.pathname) {
                this.setState({
                    menuMobile: false
                })
            }
        }
    }


Почему this.props.location.pathname и this.props.history.location.pathname вдруг оказываются равны ?

Переход делаю на страницу так:
<NavLink to="/" >

Проблема возникает именно при переходе на главную страницу, на остальных проблем нет.
  • Вопрос задан
  • 404 просмотра
Подписаться 2 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
Решения вопроса 1
rockon404
@rockon404 Куратор тега React
Frontend Developer
Почему this.props.location.pathname и this.props.history.location.pathname вдруг оказываются равны ?

Потому что location и history.location - это один и тот же объект. Ваше условие не выполнится никогда.

Поправить можно так:
componentDidUpdate(prevProps) {
  if (
    prevProps.location.pathname !== this.props.location.pathname &&
    this.state.menuMobile
   ) {
    this.setState({ menuMobile: false });
  }
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
uashkki
@uashkki
Frontend Developer
Попробуйте так: <NavLink exact to="/" >
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
ITK academy Воронеж
от 50 000 до 90 000 ₽
IT ATLAS Москва
от 200 000 до 250 000 ₽