Во-первых, самым чистым способом по-прежнему является наличие компонентов контейнера для каждого компонента (функционального или класса).
Вы должны отображать только минимальное состояние из redux для любого компонента, которому требуется состояние redux.
Теперь вы должны сопоставить каждый компонент с редукцией? Что ж, если у паранта есть все необходимое в дочернем элементе, возможно, не стоит отображать один из дочерних компонентов. Однако, если вы придерживаетесь первого пункта и сводите сопоставление к минимуму, тогда, возможно, у родителей нет данных, и если это так, сопоставление детей может иметь смысл.
Подписывая каждый компонент на минимум, т.е. имея больше сопоставленных компонентов, по умолчанию вы получите меньше повторных рендеров, что полезно.