У меня есть страница настроек с несколькими подмаршрутами:
--/home
--/articles
--/settings
--/Account(default)
--/Help
--/About
Я бы хотел, чтобы это было так: когда я нахожусь на любой из подстраниц в настройках, и браузер возвращается в историю, он всегда должен переходить на страницу учетной записи (по умолчанию). Возврат к предыдущему состоянию будет соответствовать нормальному поведению истории браузера.
Как лучше всего с этим справиться?





Вы можете использовать история:
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;
}
};
}