У вас есть пара проблем в коде, показанном в вашем вопросе.
Для ваших стилей вам нужно что-то более похожее на следующее:
const styles = theme => ({
drawerPaper: { background: "blue" }
});
В этом случае «pocketPaper»является ключом для моего имени класса, а затем объект справа содержит свойства CSS для этого класса.Когда передано в withStyles
, это сгенерирует CSS следующим образом:
<style>
.classname-generated-for-drawerPaper-key: {
background: blue;
}
</style>
У вас был ключ имени класса «background» со строкой «BLUE» в качестве свойств CSS, которые в конечном итоге заканчиваются CSSнапример:
<style>
.classname-generated-for-background-key: {
0: B;
1: L;
2: U;
3: E;
}
</style>
, который, конечно, не является допустимым CSS и не будет влиять на бумагу.
Вторая проблема заключается в том, как указывать классы:
classes = {{
paper: classNames({
background:classes.background,
[classes.drawerOpen]: this.state.open,
[classes.drawerClose]: !this.state.open
})
}}
Когда вы передаете объект в classNames
, ключами объекта являются имена классов и связанные с ними значения, которые управляют (в зависимости от того, ложно это или верно), следует ли включать имя класса.С синтаксисом, который вы использовали, classes.background
всегда будет верным, что означает, что будет включен класс "background" (а не сгенерированное имя класса в classes.background
), что не будет иметь никакого эффекта, так как класс "background" не имеетбыл определен.
Вместо этого вы должны иметь:
classes = {{
paper: classNames(classes.drawerPaper, {
[classes.drawerOpen]: this.state.open,
[classes.drawerClose]: !this.state.open
})
}}
, который безоговорочно будет включать classes.drawerPaper
.
Вот модифицированная версия одного из демонстрационных примеров Drawer, ноцвет фона ящика изменился на синий: https://codesandbox.io/s/wqlwyk7p4l