169 похожих чатов

Ребятки рассудите: если верстать на реакте по-дедовски, закладывая некоторые состояния

отображения (ну там открыт табчик или закрыт, активна кнопка/неактивна) путём добавления дополнительных классов к DOM-элементам используя БЭМ-методологию, это ОК или прошлый век и лучше юзать module.css и css in js?

40 ответов

3 просмотра

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

css-in-js оверкилл если то что вы делаете простой проект без дизайн системы или ее подобия, БЭМ это не дедовский способ, а вполне нормально, и тем не менее css модули мне кажутся лучшим решением для большинства задач это мое мнение.

Lastiqe-Adadurov Автор вопроса
Firstname Lastname
в реактах наших управлять видимостью надо из JSX, ...

Получается, что БЭМ-методология в корне не годится для реакта?

То, что ты в начале описал не зависит от того, как ты пишешь стили, навесить доп. класс в любом случае можно. Если юзаешь бэм, то никто не запрещает применять его и модули одновременно, всё-таки одно другое не заменяет полностью, хотя тут наверно большинство другого мнения.

насчет active-не active — да, классами. да, css-modules или css-in-js

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

Lastiqe Adadurov
Получается, что БЭМ-методология в корне не годится...

ну в реакте ты можешь не забывать что у тебя есть блок и он задаёт margin для элементов)

Lastiqe Adadurov
Получается, что БЭМ-методология в корне не годится...

ну такое. зачем, когда есть css-modules или css-in-js. а насчет дебага чел загнул. в дев режиме имена классов остаются теми же, что в файле модуля + хэш. в проде имена выпиливаются

Lastiqe-Adadurov Автор вопроса
Alexandr
То, что ты в начале описал не зависит от того, как...

Модули вообще никак не стакаются с БЭМ. Ничто не стакается с БЭМ в принципе, т.к. эта система замкнута сама в себе и любые сторонние сущности напрочь рушат концепцию бэм, тем более модульный КСС

Lastiqe Adadurov
Модули вообще никак не стакаются с БЭМ. Ничто не с...

Ничего не рушат модули, разве что отпадает надобность в длинных именах для классов, что только плюс, работать через миксины, модификаторы, блоки и элементы по прежнему можно остаётся, как и юзать стили написания классов, чтобы сразу понятно было что есть что.

Lastiqe-Adadurov Автор вопроса
Alexandr
Ничего не рушат модули, разве что отпадает надобно...

Но это и создает путаннцу, плюс к этому концепция "один файл - один блок" не совсем укладывается в модульность, т.к. модуль сам по себе принадлежит целому компоненту, а деление на блоки и деление на компоненты отличаются

Lastiqe Adadurov
Но это и создает путаннцу, плюс к этому концепция ...

По мне блоки очень хорошо ложатся на компоненты.

Lastiqe-Adadurov Автор вопроса
Alexandr
По мне блоки очень хорошо ложатся на компоненты.

Они ложатся В компоненты. В компоненте может быть любое кол-во блоков. а вот в блоке напротив не может быть что-то большее, чем блок. Сравнивать их, всё равно что сравнивать грузовик, и ящики, которые этот грузовик перевозит

Lastiqe Adadurov
Они ложатся В компоненты. В компоненте может быть ...

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

Lastiqe Adadurov
Они ложатся В компоненты. В компоненте может быть ...

Может, но чем меньше там блоков, тем лучше, по бэму тоже описываются ситуации, когда надо делать "элементы элементов" и как их решать. Наоборот очень хорошая сдерживающая модель, которая не позволяет плодить жирные компоненты.

Alexandr
Что когда?

когда можно делать элементы элементов?

Lastiqe-Adadurov Автор вопроса
Firstname Lastname
апи сделай нормальный, тогда не надо будет сравнив...

Ну это ж не значит, что надо верстать как мудак. Примеси совсем уж так-себе идея для обеспечения реюзабельности стилей.

Lastiqe Adadurov
Ну это ж не значит, что надо верстать как мудак. П...

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

Nikolay Tolochnyy
когда можно делать элементы элементов?

Ну правильнее будет сказать не когда, а как, сейчас найду эту часть в доке

Lastiqe-Adadurov Автор вопроса
Firstname Lastname
если у тебя DRY прямо в крови, то можешь юзать мик...

переменные не решают проблему дублирования, ты просто будешь переписывать свойства по 100500 раз записывая переменные, вместо значений. А на счёт проектирования: организация CSS кода - это часть проектирования, при чём не самая последняя на фронте.

Lastiqe Adadurov
переменные не решают проблему дублирования, ты про...

если честно, я не понимаю концепцию то есть, условно у нас есть Button. внезапно, нам нужен Button с Icon. мы берем Button, добавляем ему startIcon, endIcon пропы, вешаем на них классы из модуля и все

Lastiqe-Adadurov Автор вопроса
Firstname Lastname
если у тебя DRY прямо в крови, то можешь юзать мик...

В идеале должны быть БЭМ-блоки с глобальной областью видимости и минимумом специфичности, которые можно использовать сразу в нескольких компонентах. Кнопки, инпуты, etc...

Lastiqe Adadurov
В идеале должны быть БЭМ-блоки с глобальной област...

ну это тебя уже в степь какую-то лютую понесло. ты создаешь одну и ту же вариацию Button с разными классами?

Lastiqe-Adadurov Автор вопроса
Firstname Lastname
если честно, я не понимаю концепцию то есть, услов...

А можно просто написать button button—red и кнопка будет красной, а потом добавить icon и там будет икнока

Lastiqe-Adadurov Автор вопроса
Nikolay Tolochnyy
а зачем тогда реакт?

А реакт не эту проблему решает

Nikolay Tolochnyy
когда можно делать элементы элементов?

В общем речь была о служебных блоках, не удалось найти почему-то кокретно как он пишется в доке, помню, что это делается примерно так <ul class='list'> <li class='list__item'> <a class='list__item-link'>link</a> </li> </ul> Но с реактом надобность и в таком в принципе отпадает, когда всё можно делать через композицию. https://ru.bem.info/methodology/quick-start/#%D0%92%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D1%8C-1

Alexandr
В общем речь была о служебных блоках, не удалось н...

или через рендер-проп и экспортом служебных компонентов

Firstname Lastname
или через рендер-проп и экспортом служебных компон...

Ну это я к тому, что если нормально писать компоненты, то там и не будет большой вложенности

Alexandr
В общем речь была о служебных блоках, не удалось н...

ну тут не элемент элемента, но мысль я понял, спасибо)

Alexandr
Ну это я к тому, что если нормально писать компоне...

ну вот в случае с Dialog хз, как по-другому сделать. там есть сам Dialog, DialogContent, DialogTitle, DialogActions. может, еще что-то

Lastiqe-Adadurov Автор вопроса
Alexandr
В общем речь была о служебных блоках, не удалось н...

В бэме допускается любая вложенность элементов, это в доке не первых страницах написано https://prnt.sc/v9cpxr

Nikolay Tolochnyy
ну тут не элемент элемента, но мысль я понял, спас...

Ну да, если прям элемент элемента надо создать, то стоит задуматься над тем, а не пора ли отдельный блок делать, как собственно и в реакте надо время от времени задумываться, а нельзя ли разбить один компонент на несколько

Lastiqe Adadurov
В бэме допускается любая вложенность элементов, эт...

Под вложенностью я имел ввиду вложенность внутри компонента, а не в доме, понятно, что там она любой может быть.

Firstname Lastname
если честно, я не понимаю концепцию то есть, услов...

И компоненты становятся всё более и более жирными, тот случай, что ты описал прям идеально ложится на то, что надо просто отдельную кнопку делать.

Lastiqe Adadurov
Получается, что БЭМ-методология в корне не годится...

это все субъективная хрень каждый вертит как хочет, делай так как удобнее тебе или команде

Похожие вопросы

Обсуждают сегодня

Такой вопросец - есть функция function MySuperDuperConcat(const a: array of AnsiString): AnsiString; Как мне в её теле сделать вот так? Result:=Concat(a); А не грустный вариан...
notme
15
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
48
type TObj = object procedure Init; virtual; end; TObj1 = object(TObj) procedure Init; override; end; procedure TObj1.Init; begin inherited; end; procedur...
Alexander 👋
29
А чем вам питонисты не угодили?😂
.
79
Вот смотрите у меня есть два стрима сейчас fs, cs: TStream; fs := TFileStream.Create('filename'); cs := TCompressionStream.Create(compression_level, fs); Я хочу сделать так: ...
notme
5
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
83
Можно ли загрузить скрипт py в бота чтобы он работал по нему? как это сделать?
huskadam #RCC Фанат? @hitlerpvp
13
Всем здравствуйте! Я хотел узнать сколько стоит средняя месячная зарплата у Electron js разработчиков? Мне очень это важно и нужно, плиз помогите узнать эту инфу! Для Джунио...
U.K.
10
Hello. Could you please help me with finding all coordinates within a radius using a spatial index, given that I have a table with coordinates? SET @lng = 37.57925; SET @lat ...
Rinchin G
8
free(NULL) это UB?
#
8
Карта сайта