React Classname Module allows you to write your classnames for CSS Modules as easy as without CSS Modules. It's build with classnames, so you have a simple and powerful way to write your classnames.
Notice: This is currently a 0.x version. What this actually means is that it works in our project but we're too busy to write tests to be sure that it'll work in your project, too.
npm install --save react-classname-module
See this example. Yuck, it sucks!
import React from "react";
import styles from "styles.css";
class MyComponent extends React.Component {
render() {
return (
<div className={styles.head}>
<h1 className={styles["headline--h1"]}>Lorem ipsum</h1>
<div className={styles.content}>
...
</div>
</div>
);
}
}
export default MyComponent;
With React Classname Module you can simply write this nice little piece of code:
import React from "react";
import cm from "react-classname-module";
import styles from "styles.css";
class MyComponent extends React.Component {
render() {
return (
<div className="head">
<h1 className="headline--h1">Lorem ipsum</h1>
<div className="content">
...
</div>
</div>
);
}
}
export default cm(MyComponent, styles);
And that's it.
- Supports local and global classnames
- Works with stateless Components
- Works with multiple classes:
className="btn btn-highlight"
- Works with classnames
- identical local and global classnames
- merging
className
on a React Component:
e.g.<Foo className="bar" />
will override the Components className with the CSS Module"bar"
Instead of writing a string into classname, you can pass a typical classnames object into it.
let classnames = {
foo: true,
bar: true,
"foo-bar": false
}
<div className={classnames}></div>
- Fixed missing
defaultProps
andpropTypes
in stateless Components
- Removed silly dead code
- Support for stateless components
- initial version