У меня есть такая структура, есть маршрут вроде:
<Route path="/sample-route" component={ComponentA}/>
Тогда ComponentA
имеет:
<ComponentA>
<ComponentB/>
<ComponentC>
<MaterialUIDrawer/>
</ComponentC>
</ComponentA>
ComponentC
используется в 5 различных маршрутах какребенок.MaterialUIDrawer
отображается на основе флага в редукторном редукторе.Проблема, которую я пытаюсь решить, - когда ящик открыт, щелчок назад скрывает его, но также перемещается назад.Я попытался решить это следующим образом:
window.onpopstate = (e) => {
if (this.props.isOpen) {
this.props.toggleDrawer(false);
this.props.history.replace(this.props.match.url);
}
};
У этого есть 2 проблемы:
Если это первая страница, на которой вы попадаете, она на самом деле ничего не делаетфункция не срабатывает
Если вы находитесь на другом сайте и переходите по URL-адресу, содержащему ящик, нажатие кнопки «Назад» перемещает вас на другой URL (другой домен)
Я также попытался установить <Route/>
в ComponentC
, и тогда ящик живет там, но мне не удалось заставить его работать, возможно, путь неправильный.Казалось, что это может быть правильный путь, хотя, если путь /path1
, тогда ящик живет в /path1/drawer
, или /path2/drawer
, и т. Д.
Я пытаюсь найти путь для спиныкнопка в браузере, чтобы закрыть ящик (чтобы выполнить определенную мной функцию) и переопределить функциональность по умолчанию.