Я пытаюсь создать стиль маршрутизации, который включает «наложение» страниц - модальное окно, которое появляется в верхней части предыдущей страницы (все еще видимое, поскольку наложение полупрозрачно), но меняет URL.Хорошим примером этого стиля является домашняя страница Product Hunt .
. Ранее я нашел решение, отобразив маршрут для наложения вне коммутатора, а затем сопоставив путь к источнику источника.ссылка (это будет связано предсказуемо только с двух разных точек зрения).Это сработало очень хорошо.
Выглядело это так:
<Switch>
<Route exact path="/" component={Home} />
<Route exact path="/search" component={Search} />
<Route exact path="/:category" component={Category} />
<Route exact path="/:category/:id" component={Category} /> // this matches when overlay is active
</Switch>
<Route exact path="/:category/:id" component={Overlay} />
Теперь, однако, наложения могут отображаться со страницы поиска, и нажатие на результат поиска изменит базовый вид,где в идеале он останется на месте, если пользователь закроет оверлей или использует кнопку возврата.
Это заставило меня переосмыслить мою реализацию.Вместо непосредственного использования <Link>
s для управления отображением оверлея, я теперь использую React Context для управления оверлеем, который теперь изменяет URL при монтировании.На данный момент это создает то же поведение, что и раньше, но мне интересно, могу ли я что-нибудь сделать, чтобы «сохранить» предыдущий URL-адрес и затем использовать его для управления тем, что выводит компонент <Switch>
?
Есликто-нибудь имеет какой-либо вклад или опыт с таким поведением, это ценится.Я обязательно вернусь с моим решением, если найду хорошее.