Как стать автором
Обновить

Комментарии 10

Так не гибко, в компонент Button можно вынести общие стили ну и кнопок может быть гораздо больше. Все они будут лежать в одном месте и ими управлять так проще, просто указываешь нужный тип

Тут есть нюанс, при использовании такой "фабрично кнопки", у вас будет тянутся код всех кнопок, даже если вы используете только одну-две. И какой-нибудь tree shaking тут тоже не поможет

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

В этом конкретном примере может и проще, но имеется в виду ситуация, когда у тебя есть массив данных элементов со свойством type и тебе в цикле нужно вывести их на экран.

При том что на этапе компиляции ты не знаешь где PrimaryButton, а где DangerButton 

Ну, я думаю, проще сгенерировать Hash Map со всеми нужными параметрами (style, text). Далее, создаём один компонент button, а не 10, в котором будем брать все нужные параметры из Map в зависимости от получаемых данных, в данном случае это свойство type. Это позволит убрать ненужный switch case и даже сделает код более оптимизированным.

Это конечно всё красиво, элегантно и.т.д, но не для реальной разработки(.

В коммерческом продукте все сводится к простате использования и минимальном времени для написания. Это много с чем связанно (менеджемент, сроки, багфиксинг и.т.д) и рано или поздно ты приходишь к тому что реально проще и быстрее написать несколько похожих компонентов (тех же кнопок, вплоть до 95% схожести кода) и их будет гораздо удобней хендлить, костомизировать и вообще понимать логику роботы, чем делать какие-то умные структуры и обертки (писать код ради кода).

Так что, если ты молодой энтузиаст и твой пукан ещё не достаточно сгорал.. то да, можно заморочиться как автор написал и сделать всё по красивому 😅

Здравствуйте, я пишу свою ui/ux библиотеку и наткнулся на вашу статью в которой вы подобное делаете... Я использую module.sass для стилизации а не tailwind как в большинстве ,от сюда у меня возникает вопрос: насколько правильно возвращать именно компонент в конструкции switch/case а не применять определённые подклассы к уже существующему скелету компонента?

Пример: у вас есть заготовка дефолтной кнопки без цвета, а с помощью параметров из прос вы возвращаете либо компонент с определенным стилем либо добавляете стили к дефолтному компоненту

Компонентам бы lazy loading добавить

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории