#reactjs #css-modules
Вопрос:
Я пытаюсь использовать условный шрифт, но те же другие свойства в CSS.
Я хочу использовать cssmodules, чтобы у меня не было всего этого кода для каждой вкладки.
Это мой код:
<Tab style={{textTransform: 'none' , fontWeight: (tabValue === 0) ? 'bold' : 'normal'}} label="Updates" />
<Tab style={{textTransform: 'none' , fontWeight: (tabValue === 0) ? 'bold' : 'normal'}} label="Authorize" />
<Tab style={{textTransform: 'none' , fontWeight: (tabValue === 0) ? 'bold' : 'normal'}} label="Historical" />
Могу ли я сделать это с помощью ifs внутри классов css.modules?
PD: Плюс я хочу использовать свои цвета констант в файле .module.css, возможно ли это?
import { COLORS } from '../../services/Constants';
Ответ №1:
Для условных обозначений, зависящих от JS, я предпочитаю создавать два класса, в этом случае это было бы:
.text_bold{
font-weight: bold;
}
.text_normal{
font-weight: normal;
}
А затем в своем коде используйте имя класса, предпочтительное для определенного компонента:
import * as importedClasses from './yourCss.module.css'; //Somewhere on top
<Tab className={tabValue === 0 ? importedClasses.font_bold : importedClasses.font_normal} label="Updates" />
Также для нескольких имен классов:
const fontClass = tabValue === 0 ? importedClasses.font_bold : importedClasses.font_normal;
<Tab className={`${fontClass} ${importedClasses.otherClass}`} label="Updates" />
Для вашего PS вам было бы намного проще, если бы вы использовали SASS/SCSS вместо CSS.
В SCSS вы можете импортировать файлы .scss в другие файлы .scss и использовать переменные так просто, как:
$yourVar: #000000;
.yourClass {
color: $yourVar;
}