您必须创建一个包装器组件,用一个接受className 的 div 来包装您的组件。
const DoesntSupportClassNameWrapper = (props) => {
const { className, style, ...rest } = props;
return (
<div className={className} style={style}>
<DoesntSupportClassName {...rest} />
</div>
);
};
完整示例
Edit @ CodeSandbox
App.jsx
import React from "react";
import PropTypes from "prop-types";
import { DoesntSupportClassName, SupportsClassName } from "./components";
import "./styles.css";
const styles = {
heading: {
color: "red"
}
};
const DoesntSupportClassNameWrapper = (props) => {
const { className, style, ...rest } = props;
return (
<div className={className} style={style}>
<DoesntSupportClassName {...rest} />
</div>
);
};
DoesntSupportClassNameWrapper.propTypes = {
className: PropTypes.string,
style: PropTypes.object
};
const App = () => {
return (
<div className="App">
<SupportsClassName text="Heading 1" className="heading" />
<DoesntSupportClassName
text="Heading 2"
className="heading"
style={styles.heading}
/>
<DoesntSupportClassNameWrapper text="Heading 3" className="heading" />
<DoesntSupportClassNameWrapper text="Heading 4" style={styles.heading} />
</div>
);
};
export default App;
DoesntSupportClassName.jsx
import React from "react";
import PropTypes from "prop-types";
const DoesntSupportClassName = (props) => {
const { text } = props;
return <h1>{text}</h1>;
};
DoesntSupportClassName.propTypes = {
text: PropTypes.string
};
export default DoesntSupportClassName;
SupportsClassName.jsx
import React from "react";
import PropTypes from "prop-types";
const SupportsClassName = (props) => {
const { text, className } = props;
return <h1 className={className}>{text}</h1>;
};
SupportsClassName.propTypes = {
className: PropTypes.string,
text: PropTypes.string
};
export default SupportsClassName;