Я пытаюсь настроить прослушиватель истории на самом верхнем уровне, чтобы при каждом изменении местоположения выполнялся какой-то код (отслеживание Google Analytics в моем случае).
В настоящее время мой App.jsвыглядит так:
render() {
return (
<BrowserRouter>
<Switch>
<Route path="/" exact component={Home}/>
<Route path="/" component={MainLayout}/>
</Switch>
</BrowserRouter>
);
}
Как я понимаю, я могу использовать только history
внутри BrowserRouter
, но у него может быть только один дочерний элемент, поэтому я могу поместить его только в Switch
, но тогдаМне придется поместить его внутри каждого компонента в Switch, что я не могу сделать, поскольку хочу, чтобы он запускался только один раз.Если я просто добавлю пользовательский компонент в Switch
, не заключая его в Router
, истории не будет.
Что я должен изменить, чтобы он работал?Можно ли получить экземпляр history
в коде App.js
?Можно ли добиться с помощью пользовательского компонента или HOC?