bem-react
bem-react copied to clipboard
@bem-react/core: Props added inside modifier
Есть компонент CarouselControls с пропсами:
export interface ICarouselControlsProps extends IClassNameProps {
items?: ICarouselControlsItemProps[];
colored?: boolean;
theme?: 'images';
}
Под модификатором colored добавляется проп colorScheme:
export interface ICarouselControlsColoredProps {
colorScheme?: string;
}
export const carouselControlsColored = withBemMod<ICarouselControlsColoredProps, ICarouselControlsProps>(...);
Прямо сейчас такой код:
const CarouselControlsWithMods = compose(carouselControlsColored, CarouselControlsThemeImages)(CarouselControlBase);
<CarouselControlsWithMods /* подсказка IDE */
Показывает такую подсказку в IDE.
Это может запутать разработчика, потому что проп colorScheme можно написать сразу, но работает он только под модификатором colored - о чем в подсказке ни слова
Обсудили с @awinogradov и @yarastqt.
Были такие предложения:
- Написать монстра
const carousel: React.FC<Omit<ExtractProps<typeof CarouselControlsWithMods>, 'colored'>> = props => <CarouselControlsWithMods {...props} colored/>; - Экспортировать из модификатора сам HOC (третий аргумент
withBemMod) и результатwithBemMod, чтобы можно было добавлять HOC без предиката - Договориться под модификатором не добавлять пропсы. А делать это через отдельные HOC-и
Решили, что 3-ий подход лучше. Надо увековечить это в доке