К сожалению, вы пытаетесь сделать не так, как работает React.
React.memo
позволяет избежать запуска дочерней функции рендеринга, если родительский компонент рендерит этого дочернего элемента с теми же параметрами. Если согласование заменяет родительский элемент новым компонентом, новый родительский элемент не будет повторно использовать тот же запомненный компонент, даже если он отображает тот же дочерний элемент, что и последний родительский элемент.
Так что в случае вашего react-router
, когда вы переключаете маршруты, каждый компонент будет перерисован. DOM может по-прежнему избегать ненужных обновлений, но ваши функции рендеринга будут по-прежнему вызываться.
Если вы вытащите компонент <Header/>
вверх в дереве, вы сможете избежать повторных рендерингов.