Size: a a a

Atomic Design && Feature Slices

2021 February 06

DZ

Dmitry Zherebko in Atomic Design && Feature Slices
Masiya Guseynov
хай эксперты atomic ! подскажите пожалуйста нормально ли в молекуле писать useSelector для данных ? Если нет, то откуда лучше прокидывать данные ?
Я стараюсь молекулу держать чистой функцией которая только через пропсы что-то получает
источник

DZ

Dmitry Zherebko in Atomic Design && Feature Slices
И не зардкодит ни текстов ни дата фетчинн
источник

MG

Masiya Guseynov in Atomic Design && Feature Slices
@zdmitr согласен, но вопрос где маппить данные ? создавать прослойку контейнеров или хоков ?
источник

DZ

Dmitry Zherebko in Atomic Design && Feature Slices
Masiya Guseynov
@zdmitr согласен, но вопрос где маппить данные ? создавать прослойку контейнеров или хоков ?
У меня жирные контейнеры
источник

DZ

Dmitry Zherebko in Atomic Design && Feature Slices
Просто хук рядом с контнецнером
источник

DZ

Dmitry Zherebko in Atomic Design && Feature Slices
Если маппер сложный то можно вынести в функцию
источник

DZ

Dmitry Zherebko in Atomic Design && Feature Slices
Я обычно такие функции в руте фичи и оставляю
источник

MG

Masiya Guseynov in Atomic Design && Feature Slices
@zdmitr ок с этим понятно, а как называешь контейнер ? в соответствии с названием молекулы ? например molecule - CartItem, container - CartItemContainer ?
источник

DZ

Dmitry Zherebko in Atomic Design && Feature Slices
Смотря че за кейс
источник

DZ

Dmitry Zherebko in Atomic Design && Feature Slices
Я не делаю молеклы которые не реюзаются
источник

DZ

Dmitry Zherebko in Atomic Design && Feature Slices
Или которые не 200 строк кода
источник

DZ

Dmitry Zherebko in Atomic Design && Feature Slices
Я просто сделаю карточку конкретную
источник
2021 February 09

D

Danila in Atomic Design && Feature Slices
Йоу. Вопрос такой


Есть фичи:

Список автомобилей
Список похожих автомобилей
Карточка автомобиля


Все три получают с бэка данные об автомобиле в одном и том же виде, получают некие настройки нормализации (один шейп для всех трёх фич) и должны нормализовывать пришедшие данные в соотвествии с настройками нормализации

Вопрос - нормально ли создать фичу car, которая будет в себе держать model/api/utils  - тип приходящего автомобиля, правила нормализации, сами функции нормализации, и так далее?

Сначала мне это показалось норм решением но за ним последовал вопрос - а почему вьюшка, которая по области ответственности должна бы была бы лежать рядом (детальная карточка авто) лежит теперь отдельно. Я запутался, посоветуйте что-нибудь умное
источник

D

Danila in Atomic Design && Feature Slices
Даже переформулирую.

Есть список машин (там своя модель - сортировки, фильтрация, всякое такое)
Есть детальная карточка машины - там своя модель

Обе фичи шарят одно понятие - Машина (type Car). Куда класть этот тип Car?
источник

D

Danila in Atomic Design && Feature Slices
В хаутукардах я вижу, что список и деталка - лежат в одной фиче, в моём случае car. Но как быть с тем, что деталка и список могут иметь свою хитрую логику и свои модели
источник

D

Draft in Atomic Design && Feature Slices
Car
|
|--CarDetail
|
|--CarList
источник

AI

Arthur Irgashev in Atomic Design && Feature Slices
Danila
Даже переформулирую.

Есть список машин (там своя модель - сортировки, фильтрация, всякое такое)
Есть детальная карточка машины - там своя модель

Обе фичи шарят одно понятие - Машина (type Car). Куда класть этот тип Car?
ну, можно сделать
features
 — cars
   — cars master/ detail list
   — cars detail template


и в master/detail компоненте сделать рендер-проп renderDetail, или что-то типа

detailComponent={}
источник

AI

Arthur Irgashev in Atomic Design && Feature Slices
или в целом даже сделать master-detail view, который положить в ui, а в фиче его реюзнуть просто
источник

D

Danila in Atomic Design && Feature Slices
Draft
Car
|
|--CarDetail
|
|--CarList
Просто типа мега-фича а в ней уже две других, каждая из которых уже там делится на вьюхи и прочее?
источник

D

Draft in Atomic Design && Feature Slices
Arthur Irgashev
ну, можно сделать
features
 — cars
   — cars master/ detail list
   — cars detail template


и в master/detail компоненте сделать рендер-проп renderDetail, или что-то типа

detailComponent={}
Зачем так сложно?
источник