Если лайаут одинаковый на каждом маршруте:
render() {
return(
<Wrapper>
<Header />
<Main />
<Footer />
</Wrapper>
);
}
в компоненте Main располагаете Switch с маршрутами.
Если на разных страницах он может быть разный. То можно сделать контейнеры для контента:
const MainPageLayout = ({ children }) => (
<Wrapper>
<Header />
<PageContent>
{children}
</PageContent>
<Footer />
</Wrapper>
);
и оборачивать в него код страницы:
const SomePage = () => (
<MainPageLayout>
{/* page code */}
</MainPageLayout>
);
а в главном компоненте расположить Switch с маршрутами.
Компонент Router лучше расположить над всем приложением:
<Provider>
<Router>
<App />
</Router>
</Provider>