Могут ли контейнеры содержать классы и разметку?

Друзья,

Компоненты в Реакте делятся на несколько основных групп (напишите где ошибаюсь):
а. Презентативные (знают как отобразить данные, но не знают самих данных; работают только через свойства; всегда чистые компоненты)
б. Контейнеры (знают какие данные нужно отобразить, но не управляют отображением; являются композицией из презентативных компонентов или других контейнеров)

Теперь смотрите. Есть у нас компонент разметки приложения (шапка, меню, подвал, и прочее).

Если мы хотим чтобы шапка была серая, куда писать этот стиль? В компонент шапки, и тем самым добавлять свойства отображения контейнеру? ...или делаем три компонента, LayoutContainer -> HeaderContainer -> HeaderView, и последний знает всё отображение, а данные и саму композицию шапки составляем в HeaderContainer?

На уровне удобства, мне больше третий вариант нравится. Это лучше переиспользуется, пусть и создает довольно много оберток. Мы тогда сможем сделать N-шапок на любой вкус и цвет лишь создавая новые контейнеры.
  • Вопрос задан
  • 403 просмотра
Пригласить эксперта
Ответы на вопрос 2
Robur
@Robur
Знаю больше чем это необходимо
Компоненты в Реакте делятся на несколько основных групп (напишите где ошибаюсь):


Ошибаетесь в том что в реакте компоненты делятся на какие-то такие группы. В реакте компоненты делятся совсем по другому - функциональные, на основе классов и так далее.

на презентативные/контейнеры они делятся уже не "в реакте", а в вашем конкретном приложении, при условии что вы выбрали тот подход для построения который предлагается в статьях Дена Абрамова.
Стоит отметить что это было просто его мнение на тот момент, а сейчас он пишет:
Update from 2019: I wrote this article a long time ago and my views have since evolved. In particular, I don’t suggest splitting your components like this anymore.


Можно выбрать и какой-то другой подход. И делить по другому. Или вообще на других принципах строить архитектуру. Или видоизменить его подход под какие-то свои конкретные нужны и так далее.

поэтому ответ на вопрос:
Если мы хотим чтобы шапка была серая, куда писать этот стиль?

Зависит от того - как вы в итоге строите свое приложение.
Поэтому ответ - как вы сами считаете правильным.
Для меня критейрий прост - если вы решили делать вещи каким-то образом и через время, когда вам нужно что-то сделать в этом коде вы материтесь и страдаете - решение было неверным. надо делать по другому. Если же меняете то что нужно достаточно легко и без проблем - вы все сделали правильно.

Когда приложение достаточно вырастет - вы сами поймете как для вас лучше, если будете обращать внимание.

Если вам обязательно нужны формальные правила построения компонентов - определите для себя любые как больше нравится и им следуйте. Потом поменяете, если не зайдет.
Ответ написан
@Dasslier
FrontEnd Developer

а. Презентативные (знают как отобразить данные, но не знают самих данных; работают только через свойства; всегда чистые компоненты)

Откуда инфа, что это всегда чистые компоненты?

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

Когда вы возьметесь за дело, вы сами поймете, что будет удобнее. И будете переделывать свои компоненты еще очень много раз, но в итоге разберетесь
Ответ написан
Ваш ответ на вопрос

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

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