Проблема:
У меня есть приложение React, которое использует React-Router-DOM для хэш-маршрутизации. Приложение имеет главную панель навигации с Home
и About
. Содержимое Home
имеет панель навигации с A
, B
и C
.
При переходе на www.mysite.com/#/home/
маршрутизатор по умолчанию (перенаправляет) на www.mysite.com/#/home/A
.
При переходе от /#/about
к /#/home
по навигационной ссылке Home
я хочу, чтобы маршрутизатор запомнил, какой суб-маршрут использовался в последний раз. В настоящее время при переходе к дому с помощью навигационной ссылки Home
возвращается значение #/home/A
.
Пример:
- введите URL www.mysite.com в браузере ==> отображает
/home/#/A
- используйте подменю под
Home
, чтобы выбрать B
===> рендеринг /#/home/B
- используйте главное навигационное меню для выбора
About
==> рендеринга /#/about
- используйте главное навигационное меню для выбора
Home
==> рендеринга /#/home/B
Структура
<App>
<header>
<NavLink to="/home">home</NavLink>
<NavLink to="/contact">contact</NavLink>
</header>
<section>
<Switch>
<Redirect exact from="/" to="/home/A" />
<Route path="/home">
<div>
<sub-header>
<NavLink to="/home/A">A</NavLink>
<NavLink to="/home/B">B</NavLink>
<NavLink to="/home/C">C</NavLink>
</sub-header>
<div>
... content for home
<Switch>
<Route path="/home/:id" component={ChildComponentThatUsesID}>
</Switch>
</div>
</div>
</Route>
<Route path="/about"> ... </Route>
</Switch>
</section>
</App>
Примечания
Я знаю, что мне нужно будет изменить Redirect, это просто для удобства. Я также знаю, что мне придется изменить <NavLink to="/home">
, чтобы каким-то образом включить свойство или состояние переменной, которые будут установлены при использовании одной из ссылок подменю, но я не знаю, как это сделать.