Делить ли React-компоненты на чистые и контейнерные?
======================================================

 Насколько адекватно мнение о том, что разделение React-компонентов на чистые(возвращают jsx) и контейнерные(обёртка для чистых, отвечают за логику) в 2021 году безнадёжно устарело? Недавно столкнулся с таким подходом - очень удивился. Опыта коммерческой разработки у меня нет, поэтому аргументировано возразить не смог, да и надо ли, если это так? В общем, коллеги, делите ли вы компоненты на чистые и контейнерные в своих проектах на React'e? 

 Я стараюсь делить. Другие не делят. На вопрос невозможно дать однозначный ответ. Зависит от проекта, команды и настроения того, кто пишет :)  

  

Дополню ответ: Если есть какой-то участок кода, который нужно использовать повторно, очевидно лучшим решением будет вынести его в отдельный модуль / функцию и т.п.. Деление на чистые компоненты и компоненты с логикой по сути и делается для того, чтобы вынести повторяющийся код в отдельный компонент. Иногда проще скопировать простой участок кода и не заморачиваться, а иногда лучше вынести куда-то. Так что зависит от задач и особенностей проекта. 

 Декораторы уже почти ушли с появлением хуков. Да и ререндела меньше.  

Да, код менее чистым выглядит, но это позволяет больше уделять композиции. 

 С появлением функциональных компонентов и хуков вообще перестал думать про контейнеры. Считаю что логику надо писать там, где ей самое место, а не пытаться все дочерние компоненты максимально облегчить, перенося логику в родительский компонент. Этот подход приводит к раздутому коду и смешению разной логики в одном компоненте. 

 Для проектов с редаксом, в которых используется сторибук и есть компонентное тестирование, разделять желательно, чтобы не городить велосипеды с мокированием стора.  

  

Если из выше упомянутого только редакс/мобх, стоит подумать, а нельзя ли эту логику унести из компонента в экшен.   

  

Если ничего из этого нет, а логика сложная и "раздувает" компонент, можно вынести её в кастомный хук.