React.js中CSS className的类与样式

时间:2018-09-07 00:42:10

标签: javascript css reactjs class material-ui

在下面的代码中,为什么对classes对象的调用起作用?似乎应该对定义为styles的{​​{1}}对象进行调用。

例如in this demo

const

按书面规定工作。但似乎应该是

className={classes.button}

在任何地方都定义了任何实际的className={styles.button} 对象吗?如果是这样,它在哪里定义?标记暗示一个classes对象。但是在index.js中调用时,没有this.props.classes传递给props

这是怎么回事?

https://codesandbox.io/s/qxv466wlq
<Demo />

1 个答案:

答案 0 :(得分:3)

如果您看这行:

export default withStyles(styles)(OutlinedButtons);
我相信会为您的问题提供答案。材质UI具有一个withStyles函数,该函数采用一个样式对象,然后返回另一个函数,该函数采用一个组件以返回一个新组件。这是一个高阶组件,可以在React docs.

上阅读

如果您查看withStyles的链接代码,则可以看到以下代码行,它呈现了传入的组件:

return <Component {...more} classes={this.getClasses()} ref={innerRef} />;

并且正在提供classes道具,使其可用于随withStyles导出的任何组件。