#javascript #reactjs #react-proptypes #css-modules
Вопрос:
Это имя класса принимает значение oneOf-prop, равное классу (пример: «основной»). Я пытаюсь понять, как отформатировать это имя класса, чтобы оно работало с модулями CSS.
Приведенный ниже код отображает имя класса как styles.primary, если мы передадим его как prop. Но мы не будем обрабатывать это с помощью css-модулей. Смотрите это изображение отображаемых имен классов
import styles from '../../styles/components/buttons/Cta.module.css';
export const CTA = ({ fit, type, ...props }) => {
const mode = fit ? styles.fit : styles.fill;
return (
<button
type="button"
className={[styles.cta, `styles.${type}`, mode].join(' ')}
{...props}
>
</button>
);
};
CTA.propTypes = {
fit: PropTypes.bool,
type: PropTypes.oneOf(['primary', 'secondary', 'tertiary', 'disabled']),
};
Есть какие-нибудь идеи?
Ответ №1:
Вот как я это делаю:
<li className={`${css.notification} ${css.important}`}>
Комментарии:
1. Да, вы можете использовать обратные ссылки вместо использования массива. Основная проблема заключается в форматировании имени класса, чтобы мы могли получить реквизит. если мы напишем ${styles.type}, он будет отображаться неопределенным.