Работаю с react-jss уже несколько недель, и я пытаюсь найти лучший способ стилизации некоторых компонентов. У меня много условных выражений в этих компонентах, и я стараюсь не создавать слишком много новых компонентов, которые имеют много общего кода. Мне нравится, что я могу поместить этот logi c в свои стили через JS вместо того, чтобы условно применять имена классов, как мы делали раньше.
Пример одного из моих более сложных стилей / meh:
color:
props.inactive && (props.buttonType === 'outline' || props.buttonColor === 'red')
? colors.greyscaleReg
: props.buttonColor === 'red'
? colors.primaryRed
: props.buttonType === 'outline'
? colors.primaryBlue
: props.buttonType === 'lightFill'
? colors.primaryBlue
: colors.white,
Я фанат троичных файлов, поэтому у меня нет проблем с их синтаксическим анализом, хотя некоторые из моих коллег не поклонники троичных файлов, особенно когда они вложены / связаны вот так.
Рекомендуется ли вынести этот logi c за пределы стилей?
Одно из предложений состояло в том, чтобы создать функцию для хранения этого кода и вызова этой функции внутри стилей (нельзя использовать внешнюю функцию для зависания, и он не рассчитывает его правильно).
И мне это очень не нравится:
backgroundColor: () => {
if (props.inactive) {
return colors.greyscaleLight;
}
if (!props.loading && !props.inactive) {
if (props.buttonType === 'outline') {
return colors.secondaryPaleBlue;
}
if (props.buttonType === 'lightFill') {
return colors.secondarySoftBlue;
}
} else if (props.buttonColor === 'red') {
return colors.secondaryDarkRed;
}
return colors.darkPrimaryBlue;
},