React Router: вернуться на определенную страницу

У меня есть страница настроек с несколькими подмаршрутами:

--/home
--/articles
--/settings
  --/Account(default)
  --/Help
  --/About

Я бы хотел, чтобы это было так: когда я нахожусь на любой из подстраниц в настройках, и браузер возвращается в историю, он всегда должен переходить на страницу учетной записи (по умолчанию). Возврат к предыдущему состоянию будет соответствовать нормальному поведению истории браузера.

Как лучше всего с этим справиться?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
0
398
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете использовать история:

import createHistory from "history/createBrowserHistory"

const history = createHistory()
history.push("/account")
<Router history = {history}/>
Ответ принят как подходящий

После некоторого исследования кажется, что нет простого способа сделать это, обсуждения в github с реактивным маршрутизатором не будут возражать. обходной путь кажется консенсусом. Мне это кажется немного грубоватым, но все, что работает, - хорошо.

Поэтому вместо того, чтобы держать каждую подстраницу в настройках со своим собственным маршрутом (который будет обрабатываться реактивным маршрутизатором), у меня они контролируются состоянием в компоненте настроек. И используется следующая обработка событий:

componentDidMount = () => {
  window.onpopstate= () => {
    if (this.state.currentSubPage !== 'account-settings') {
      this.props.history.push('/settings');
    } else {
      window.onpopstate = null;
    }
  };
}

Другие вопросы по теме