Я использую CSS в JS (JSS) с material-ui, он отлично работает, но я не понимаю, что он должен предложить (больше, чем внедрение стиля) с точки зрения возможностей / средств кодирования.Я чувствую, что что-то упускаю, поэтому у меня есть некоторые конкретные вопросы.
С внедрением стиля я могу адаптировать стиль к контексту, например:
const buttonStyle = {
border: "2px solid black »,
borderRadius: "5px",
padding: "15px",
font-family: "15px",
font-size: "2em",
backbroundColor: "red"
};
if (success) {
buttonStyle.backgroundColor = "green";
}
С помощью JSS этоПохоже, мне нужно "предварительно собрать" весь стиль кнопки в разных возможных цветах:
const style = {
buttonSuccess: {
border: "2px solid black »,
borderRadius: "5px",
padding: "15px",
font-family: "15px",
font-size: "2em",
backbroundColor: « green »
},
buttonError: {
border: "2px solid black",
borderRadius: "5px",
padding: "15px",
font-family: "15px",
font-size: "2em",
backbroundColor: "red"
}
};
Есть ли способ избежать переписывания всего стиля, когда динамический только один параметр?
И еще один момент, с JSS, похоже, что нам нужно внедрить один класс для каждого html-элемента, который нам нужно стилизовать.
Так что, если у меня есть таблица с 200 ячейками, я должендобавить 200 классов в мой DOM (когда я мог объявить это только один раз с помощью селектора td
в чистом CSS)?
Есть ли способ работать со стилем наследования между родительскими и дочерними компонентами?Поскольку существует грязный шаблон, я написал несколько раз, чтобы объединить стиль, который я внедряю из родителя, и стиль, который дети компилируют самостоятельно:
const styles = theme => ({
root: {
backgroundColor: "blue"
}
});
const childComponent = (props) => (
<div classeName={`${props.parentClass} ${props.classes}`} /> // See parentClass here
);
export default withStyles(styles)(childComponent);