@luxurypluxury

Как красиво и правильно сделать в компоненте кнопки её вариации?

У меня есть около 6 вариантов кнопки, вариацию передаю через пропс, как красивее это оформить?
  • Вопрос задан
  • 67 просмотров
Решения вопроса 1
@repcolding
https://www.npmjs.com/package/classnames - очень удобная библиотека

import styles from './Button.scss'
import cn from 'classnames'

const Button = (props) => {
  const { theme, size, children } = props

  const classList = cn(styles.button, {
    [styles.buttonPrimary]: theme === 'primary',
    [styles.buttonGhost]: theme === 'ghost',
    [styles.buttonSmall]: size === 'small'
  })

  return <button className={classList}>{children}</button>
}

export default Button


Без css модулей:

import './Button.scss'
import cn from 'classnames'

const Button = (props) => {
  const { theme, size, children } = props
  
  const classList = cn('button', {
    'button--primary': theme === 'primary',
    'button--ghost': theme === 'ghost',
    'button--small': size === 'small'
  })

  return (
    <button className={classList}>{children}</button>
  )
}

export default Button
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@luxurypluxury Автор вопроса
Пока думаю так
{variation === 'primary' &&
            <button className={styles.button__primary}>
                    {text}
            </button>
 }
{variation === 'secondary' &&
                <button className={styles.button__secondary}>
                    {text}
                </button>
}
Ответ написан
Ваш ответ на вопрос

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

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