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

Насколько адекватно мнение о том, что разделение React-компонентов на чистые(возвращают jsx) и контейнерные(обёртка для чистых, отвечают за логику) в 2021 году безнадёжно устарело? Недавно столкнулся с таким подходом - очень удивился. Опыта коммерческой разработки у меня нет, поэтому аргументировано возразить не смог, да и надо ли, если это так? В общем, коллеги, делите ли вы компоненты на чистые и контейнерные в своих проектах на React'e?
  • Вопрос задан
  • 397 просмотров
Решения вопроса 1
y0u
@y0u
dev
Я стараюсь делить. Другие не делят. На вопрос невозможно дать однозначный ответ. Зависит от проекта, команды и настроения того, кто пишет :)

Дополню ответ: Если есть какой-то участок кода, который нужно использовать повторно, очевидно лучшим решением будет вынести его в отдельный модуль / функцию и т.п.. Деление на чистые компоненты и компоненты с логикой по сути и делается для того, чтобы вынести повторяющийся код в отдельный компонент. Иногда проще скопировать простой участок кода и не заморачиваться, а иногда лучше вынести куда-то. Так что зависит от задач и особенностей проекта.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@SiSya
Декораторы уже почти ушли с появлением хуков. Да и ререндела меньше.
Да, код менее чистым выглядит, но это позволяет больше уделять композиции.
Ответ написан
С появлением функциональных компонентов и хуков вообще перестал думать про контейнеры. Считаю что логику надо писать там, где ей самое место, а не пытаться все дочерние компоненты максимально облегчить, перенося логику в родительский компонент. Этот подход приводит к раздутому коду и смешению разной логики в одном компоненте.
Ответ написан
mbelskiy
@mbelskiy
Software Developer
Для проектов с редаксом, в которых используется сторибук и есть компонентное тестирование, разделять желательно, чтобы не городить велосипеды с мокированием стора.

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

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

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы