@eugenedrvnk

Сочетание БЭМ и Vue?

Есть, к примеру у меня пост.

<div class="post">
  <img ckass="post__image>
  <div class="post__title"></div>
  <div class="post__description"></div>
</div>


В какой-то момент, мне необходимо сделать тот же пост, но без изображения. Как будет правильнее поступить, повесить модификатор post--img_hidden и там прописать .post_image {display: none}. Или просто убрать из вёрстки блок с картинкой, без навешивания всяких модификаторов? Или же к картинке добавить какой-то глобальный миксин "post__image hidden" ?

И касаемо ситуации с Vue. Есть компонент с той же вёрсткой. Есть ситуация в которой нужно убрать картинку. Правильнее её убирать через навешивание класса на компонент ('post--img_hidden') или прокидывать какой-то пропс :imgHidden="true' и просто выпиливать картинку из темплейта? Или же при прокидывании пропса навешивать класс на нужный блок?
  • Вопрос задан
  • 131 просмотр
Решения вопроса 2
ArsenyMatytsyn
@ArsenyMatytsyn Куратор тега CSS
Руководитель frontend направления, предприниматель
1. Вешать модификатор для сокрытия изображения хуже, чем не заносить изображения, т.е. если ты пишешь стили для выключенной пикчи, то уже выстрелил себе в ногу.
2. Vue, как логика компонтент→компонент как нельзя кстати вписывается в БЭМ-логику.
Ответ написан
Aetae
@Aetae Куратор тега Vue.js
Тлен
Компоненты в Vue должны по хорошему быть капсулированы. Соответственно снаружи компонента post ты никак не должен навешивать класс post__<some>, это внутренний класс компонента. Если снаружи предполагается какая-то модиикация содержимого компонента - то только через props или slot. Назначаемый компоненту класс должен иметь влияние только на сам компонент целиком и не должен ничего знать о внутренней структуре.
Внутри же самого компонента ты можешь поступать любым образом, как будет удобнее. Но поскольку Vue предоставляет v-if и v-show, то предпочтительнее юзать оные.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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