Size: a a a

2019 August 09

SB

Sergey Berezhnoy in БЭМ
Sergey Belozyorcev
@awinogradov @tadatuta @yarastqt есть вопрос на счёт нэйминга компонетов элементов в BRC.

Вы полностью дублируете имя блока в имени элемета?

// ProductCard/Gallery/ProductCard-Gallery

import { IClassNameProps } from '@bem-react/core';
import { cnProductCard } from '../ProductCard';

export interface ProductCardGalleryProps extends IClassNameProps {}

export const ProductCardGallery: React.FC<ProductCardGalleryProps> = ({
   className
}) => {
   return (<div className={cnProductCard('Gallery', [className])} />)
}

Или так делаете (по типу withModVal, вместо withBlockModVal)?

import { IClassNameProps } from '@bem-react/core';
import { cnProductCard } from '../ProductCard';

export interface GalleryProps extends IClassNameProps {}

export const Gallery: React.FC<GalleryProps> = ({
   className
}) => {
   return (<div className={cnProductCard('Gallery', [className])} />)
}
зависит от того в каком файле пишем — если в файле этого блока, то можно только имя элемента, если в другом блоке, то полностью
источник

EW

Eugeniy World in БЭМ
Не дублируем
export const Gallery: React.FC<ProductCardGalleryProps> = ...
источник

EW

Eugeniy World in БЭМ
А не, дублируем 🙁 но не обязательно
источник

EW

Eugeniy World in БЭМ
Т.к. элементы из реестров достаются по названию элементов
источник

EW

Eugeniy World in БЭМ
const { Gallery } = useRegistry()
источник

SB

Sergey Belozyorcev in БЭМ
Sergey Berezhnoy
зависит от того в каком файле пишем — если в файле этого блока, то можно только имя элемента, если в другом блоке, то полностью
Ну т.е. если я в контексте блока ProductCard нахожусь, то можно не заморачиваться и использовать Gallery

ProductCard/Gallery/desktop.ts
ProductCard/Gallery/ProductCard-Gallery@desktop.ts


// ProductCard/ProductCard@desktop.tsx
import { Gallery } from './Gallery/desktop'


Если нужно использовать элементы из вне, например какой-то блок Menu
То делаем так

import { Menu } from './components/Menu/desktop';
import { Item as MenuItem } from './components/Menu/Item/desktop';


Верно я понял?
источник

SB

Sergey Belozyorcev in БЭМ
Eugeniy World
Т.к. элементы из реестров достаются по названию элементов
По этой причине и задумался над этим неймингом ) Т.к. длинные имена не всегда читаемые (хоть и более однозначные).
источник

SB

Sergey Belozyorcev in БЭМ
Интересен опыт такого подхода
источник

EF

Elect Freak in БЭМ
блокам нельзя задавать внешнюю геометрию. А кому можно вообще? Кому задавать width, height, margin, padding и тд?
источник

EW

Eugeniy World in БЭМ
Размеры у блоков могут быть 🙂 а вот внешние отступы через миксы/обертки
источник

SB

Sergey Belozyorcev in БЭМ
@yarastqt а что на счёт имён интерфейсов для модификаторов?

export const withViewGrid = withBemMod<ProductCardViewGridProps,
vs
export const withViewGrid = withBemMod<ViewGridProps,
vs
export const withViewGrid = withBemMod<WithViewGridProps,

Придерживаетесь первого подхода?
источник

EW

Eugeniy World in БЭМ
export const withViewClassic = withBemMod<ITextinputViewClassicProps>(cnTextinput(), { view: 'classic' });
источник

EW

Eugeniy World in БЭМ
Но опять же, это все опционально
источник

SB

Sergey Belozyorcev in БЭМ
Eugeniy World
Но опять же, это все опционально
Это то понятно. Просто интересуют уже протоптанные пути :)
источник
2019 August 10

V

Valentin in БЭМ
Ильдар
спасибо, будем работать в этом направлении
Спросите его (дизайнера) мнения по поводу стайл гайда. Мб он даже не знает, что так можно.
источник

SB

Sergey Belozyorcev in БЭМ
@yarastqt есть ещё вопрос на счёт BRC...
Оборачиваете ли вы common реализации в реестры?


// ./Link/Link.tsx
import { linkRegistry } from './Link.registry'

const LinkBase ...
export Link = withRegistry(linkRegistry)(LinkBase)

// ./Link/Link@desktop.tsx
import { linkRegistry } from './Link.registry/desktop'
import { Link as LinkBase } from './Link'

export Link = withRegistry(linkRegistry)(LinkBase)
источник

ЕЕ

Евгений Евгений in БЭМ
источник

ЕЕ

Евгений Евгений in БЭМ
есть слайды к этмоу уроку?
источник

ЕЕ

Евгений Евгений in БЭМ
который ни гите?
источник

ЕЕ

Евгений Евгений in БЭМ
там ссылка протухла
источник