<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прекращает дальнейшую цепочку сравнений, после первого совпадения.