React和Material-Ui在.js中定义类,并将其作为字符串传递给组件

时间:2018-10-11 21:20:15

标签: javascript reactjs material-ui

我正在尝试在.js文件中定义一个类,因此我可以利用material-uis主题对象,并将其作为字符串传递给组件,因为components prop只接受字符串。 React-Dropzone导入仅接受字符串作为参数,而不接受类对象。

codesandbox:

https://codesandbox.io/s/x74qvqxww4

或:

import React, { Fragment } from "react";
import Dropzone from "react-dropzone";
import { withStyles } from "@material-ui/core/styles";

const styles = theme => ({
  green: {
    color: "blue"
  }
});

function CustomDropzone(props) {
  return (
    <Fragment>
      <Dropzone acceptClassName="dropzoneAccept" />
      <div className={props.classes.green}>
        Thats how i appy styles normally
      </div>
    </Fragment>
  );
}

export default withStyles(styles, { withTheme: true })(CustomDropzone);

我该如何实现?导入.css文件是可行的,但随后我的项目中的样式将保持一致。

感谢您的任何帮助!

1 个答案:

答案 0 :(得分:0)

您需要做的就是像这样声明该类:

import React, { Fragment } from "react";
import Dropzone from "react-dropzone";
import { withStyles } from "@material-ui/core/styles";

const styles = theme => ({
  green: {
    color: "blue"
  }
});

class CustomDropzone extends React.Component {
  render() {
    return (
      <Fragment>
        <Dropzone acceptClassName="dropzoneAccept" />
        <div className={this.props.classes.green}>
          Thats how i appy styles normally
        </div>
      </Fragment>
    );
  }
}

export default withStyles(styles, { withTheme: true })(CustomDropzone);