更改纸张颜色 Material-UI

Sea*_*ean 5 javascript css class-names reactjs material-ui

我正在使用 material-ui 库开发一个 React 项目。我目前正在尝试添加一个对我来说很好用的抽屉。但是,我正在尝试更改此抽屉的背景颜色。我听说这样做的方法是改变抽屉纸的颜色。我尝试将以下标签添加到我的 CSS 对象中:

const styles = theme => ({
    background:"BLUE"
Run Code Online (Sandbox Code Playgroud)

然后我使用 classNames 库在我的渲染函数中引用这个对象:

  render(){
        const { classes } = this.props;
        return(
    <div className={styles.root}>
    <CssBaseline />
    <Drawer 
    variant="permanent" 
    className={classNames(classes.drawer, {
        [classes.drawerOpen]: this.state.open,
        [classes.drawerClose]: !this.state.open
    })}
    classes = {{
        paper: classNames({
            background:classes.background,
            [classes.drawerOpen]: this.state.open,
            [classes.drawerClose]: !this.state.open
        })
    }}
Run Code Online (Sandbox Code Playgroud)

但是,当我在 localhost 上运行它时,纸张仍然是纯白色的。我是否遗漏了有关 classNames 库的某些信息,或者是纸标签的特例?提前致谢,如果我应该提供比这更多的信息,请告诉我。

Rya*_*ell 5

您的问题中显示的代码中有几个问题。

对于您的样式,您需要更像以下内容:

const styles = theme => ({
    drawerPaper: { background: "blue" }
});
Run Code Online (Sandbox Code Playgroud)

在这种情况下,“drawerPaper”是我的类名的键,然后右侧的对象包含该类的 CSS 属性。当传入 时withStyles,这将生成如下所示的 CSS:

<style>
.classname-generated-for-drawerPaper-key: {
  background: blue;
}
</style>
Run Code Online (Sandbox Code Playgroud)

你有一个“background”的类名键,字符串“BLUE”作为CSS属性,它以CSS结束,如下所示:

<style>
.classname-generated-for-background-key: {
  0: B;
  1: L;
  2: U;
  3: E;
}
</style>
Run Code Online (Sandbox Code Playgroud)

这当然不是有效的 CSS 并且不会对论文产生影响。

第二个问题是如何指定类:

    classes = {{
        paper: classNames({
            background:classes.background,
            [classes.drawerOpen]: this.state.open,
            [classes.drawerClose]: !this.state.open
        })
    }}
Run Code Online (Sandbox Code Playgroud)

当您将对象传递给 时classNames,对象的键是类名和关联的值控制(基于是假还是真)是否应包含类名。使用您使用的语法,classes.background将始终为真,这意味着将包含类“背景”(而不是在 中生成的类名classes.background),由于尚未定义“背景”类,因此将无效。

相反,你应该有:

    classes = {{
        paper: classNames(classes.drawerPaper, {
            [classes.drawerOpen]: this.state.open,
            [classes.drawerClose]: !this.state.open
        })
    }}
Run Code Online (Sandbox Code Playgroud)

这将无条件地包括classes.drawerPaper.

这是抽屉演示之一的修改版本,但抽屉的背景颜色更改为蓝色:https : //codesandbox.io/s/wqlwyk7p4l