<About />
, всё стало ясно.<PageHeader>
<MainNav>
<Switch>
<Route exact path='/about' component={About} />
<Route exact path='/contacts' component={Contacts} />
</Switch>
</MainNav>
</PageHeader>
<About>
<PageHeader />
<MainBlock />
<PageFooter />
</About>
<PageHeader />
рендерите <About />
, который внутри себя вновь рендерит <PageHeader />
... ну и так по кругу. Вот вам и забитый браузерный стек.
Работает приблизительно так (в действительности же, через регулярные выражения):
С exact:
window.location.pathname === path
Без exact:
window.location.pathname.startsWith(path)
Ну и
Switch
прекращает дальнейшую цепочку сравнений, после первого совпадения.